tensorflow-如何使用可变图像的大小进行 conv2d_transpose?

基贤姓名

我试图找到一种方法来对可变大小的图像进行卷积转置。我使用了 tf.nn.conv2d_transpose api,但我失败了。

import tensorflow as tf

def conv2d_transpose(inputs, filters_shape, strides, name, padding="SAME", activation=None):
  filters = get_conv_filters(filters_shape, name)

  inputs_shape = inputs.get_shape().as_list()
  output_shape = tf.stack(calc_output_shape(inputs_shape, filters_shape, strides, padding)) #tf.pack renamed tf.stack
  strides = [1,*strides,1]

  conv_transpose = tf.nn.conv2d_transpose(inputs, filters, output_shape=output_shape,
                                          strides=strides, padding=padding, name=name+"transpose")

  if activation != None:
    conv_transpose = activation(conv_transpose)

  return conv_transpose

def get_conv_filters(filters_size, name):
  conv_weights = tf.Variable(tf.truncated_normal(filters_size), name=name + "weights")
  return conv_weights

def calc_output_shape(inputs_shape, filters_shape, strides, padding): # For conv_transpose
  batch_size, inputs_height, inputs_width, n_channel = inputs_shape
  filters_height, filters_width, before_n_channel, after_n_channel = filters_shape
  strides_height, strides_width = strides

  if padding =="SAME":
    output_height = inputs_height*strides_height
    output_width = inputs_width*strides_width

  else: # padding="VALID"
    output_height = (inputs_height-1)*strides_height+filters_height
    output_width = (inputs_width-1)*strides_width+filters_width

  return [batch_size, output_height, output_width, after_n_channel]

主要的

input_images = tf.placeholder(tf.float32, [None, None, None, 3])
transpose_layer = conv2d_transpose(input_images, filters_shape=[3,3,3,3], strides=[2,2], name="conv_3_transpose", padding="SAME", activation=tf.nn.relu)

然后,我收到以下错误。

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-11-0a594abc4f59> in <module>()
     36 
     37 input_images = tf.placeholder(tf.float32, [None, None, None, 3])
---> 38 transpose_layer = conv2d_transpose(input_images, filters_shape=[3,3,3,3], strides=[2,2], name="conv_3_transpose", padding="SAME", activation=tf.nn.relu)
     39 

<ipython-input-11-0a594abc4f59> in conv2d_transpose(inputs, filters_shape, strides, name, padding, activation)
      5 
      6   inputs_shape = inputs.get_shape().as_list()
----> 7   output_shape = tf.stack(calc_output_shape(inputs_shape, filters_shape, strides, padding)) #tf.pack renamed tf.stack
      8   strides = [1,*strides,1]
      9 

<ipython-input-11-0a594abc4f59> in calc_output_shape(inputs_shape, filters_shape, strides, padding)
     26 
     27   if padding =="SAME":
---> 28     output_height = inputs_height*strides_height
     29     output_width = inputs_width*strides_width
     30 

TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'

我认为这个错误的原因是 input_shape 没有固定。因此,在计算 output_shape 时会发生错误。我应该如何克服这个问题?

维杰米

使用动态形状,您可以在此处找到详细信息input_shape应该是:

inputs_shape = tf.shape(inputs)
...
batch_size, inputs_height, inputs_width, n_channel = inputs_shape[0],inputs_shape[1],inputs_shape[2],inputs_shape[3]  

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用TensorFlow进行图像识别

来自分类Dev

对conv2d_transpose感到困惑

来自分类Dev

我可以使用现有的操作(例如conv2d和张量操作)在python中的tensorflow中编写自定义层吗?

来自分类Dev

Tensorflow:tf.nn.separable_conv2d做什么?

来自分类Dev

如何堆叠Tensorflow的conv2d_transpose()的多层

来自分类Dev

Tensorflow conv2d_transpose(deconv)out_backprop的行数与计算的不匹配

来自分类Dev

进行预测时,conv2d_transpose取决于batch_size

来自分类Dev

如何准备存储在zip文件中的图像数据以在Tensorflow 2中进行训练?

来自分类Dev

TensorFlow 2.0如何从tf.keras.layers层获取可训练变量,例如Conv2D或Dense

来自分类Dev

在TensorFlow中编写类似Conv2D的操作

来自分类Dev

如何理解张量流中的conv2d_transpose

来自分类Dev

无效的参数:您必须使用dtype float和shape [?,?,?,?]的占位符张量'conv2d_transpose_1_target'的值。

来自分类Dev

Tensorflow Keras Conv2D多个过滤器

来自分类Dev

使用tf.conv2d添加偏见-Tensorflow.js

来自分类Dev

tensorflow conv2d参数数量

来自分类Dev

如何以TensorFlow的protobuf格式保存和读取可变大小的图像

来自分类Dev

tensorflow tf.nn.conv2d 中的特征数

来自分类Dev

tensorflow conv2d_transpose 梯度

来自分类Dev

在 tensorflow 中使用 5D 张量调整 3D 图像的大小

来自分类Dev

tensorflow中conv2d的顺序输出是什么?

来自分类Dev

TensorFlow:如何对多个图像进行图像分类

来自分类Dev

如何使用tensorflow对图像进行分类和裁剪?

来自分类Dev

如何在 Tensorflow 中解开可变大小的张量?

来自分类Dev

在 Tensorflow 中查找 conv2d 层的权重

来自分类Dev

使用 TensorFlow 进行图像分类,值错误

来自分类Dev

在 tensorflow Keras 中将图像拟合到 Conv2D 层时出错

来自分类Dev

使用 tensorflow 进行基本图像分类

来自分类Dev

如何使用彩色图像进行 Tensorflow 图像分类?

来自分类Dev

使用 Tensorflow 2 创建 RNN

Related 相关文章

  1. 1

    使用TensorFlow进行图像识别

  2. 2

    对conv2d_transpose感到困惑

  3. 3

    我可以使用现有的操作(例如conv2d和张量操作)在python中的tensorflow中编写自定义层吗?

  4. 4

    Tensorflow:tf.nn.separable_conv2d做什么?

  5. 5

    如何堆叠Tensorflow的conv2d_transpose()的多层

  6. 6

    Tensorflow conv2d_transpose(deconv)out_backprop的行数与计算的不匹配

  7. 7

    进行预测时,conv2d_transpose取决于batch_size

  8. 8

    如何准备存储在zip文件中的图像数据以在Tensorflow 2中进行训练?

  9. 9

    TensorFlow 2.0如何从tf.keras.layers层获取可训练变量,例如Conv2D或Dense

  10. 10

    在TensorFlow中编写类似Conv2D的操作

  11. 11

    如何理解张量流中的conv2d_transpose

  12. 12

    无效的参数:您必须使用dtype float和shape [?,?,?,?]的占位符张量'conv2d_transpose_1_target'的值。

  13. 13

    Tensorflow Keras Conv2D多个过滤器

  14. 14

    使用tf.conv2d添加偏见-Tensorflow.js

  15. 15

    tensorflow conv2d参数数量

  16. 16

    如何以TensorFlow的protobuf格式保存和读取可变大小的图像

  17. 17

    tensorflow tf.nn.conv2d 中的特征数

  18. 18

    tensorflow conv2d_transpose 梯度

  19. 19

    在 tensorflow 中使用 5D 张量调整 3D 图像的大小

  20. 20

    tensorflow中conv2d的顺序输出是什么?

  21. 21

    TensorFlow:如何对多个图像进行图像分类

  22. 22

    如何使用tensorflow对图像进行分类和裁剪?

  23. 23

    如何在 Tensorflow 中解开可变大小的张量?

  24. 24

    在 Tensorflow 中查找 conv2d 层的权重

  25. 25

    使用 TensorFlow 进行图像分类,值错误

  26. 26

    在 tensorflow Keras 中将图像拟合到 Conv2D 层时出错

  27. 27

    使用 tensorflow 进行基本图像分类

  28. 28

    如何使用彩色图像进行 Tensorflow 图像分类?

  29. 29

    使用 Tensorflow 2 创建 RNN

热门标签

归档