2

我正在尝试对tf.nn.deconv2d()可变大小的一批数据使用操作。但是,看来我需要将output_shape参数设置如下:

tf.nn.deconv2d(x, filter, output_shape=[12, 24, 24, 5], strides=[1, 2, 2, 1],
               padding="SAME")

为什么tf.nn.deconv2d()要固定output_shape?有没有办法指定可变批次尺寸?如果输入批量大小发生变化会发生什么?

4

1 回答 1

5

NB tf.nn.deconv2d()tf.nn.conv2d_transpose()在 TensorFlow 的下一个版本(0.7.0)中调用。

接受计算的output_shape参数作为其值,这使您能够指定动态形状。例如,假设您的输入定义如下:tf.nn.deconv2d()Tensor

# N.B. Other dimensions are chosen arbitrarily.
input = tf.placeholder(tf.float32, [None, 24, 24, 5])

...然后可以在运行时计算特定步骤的批量大小:

batch_size = tf.shape(input)[0]

有了这个值,你就可以构建使用的output_shape参数:tf.nn.deconv2d()tf.pack()

output_shape = tf.pack([batch_size, 24, 24, 5])

result = tf.nn.deconv2d(..., filter, output_shape=output_shape,
                        strides=[1, 2, 2, 1], padding='SAME')
于 2016-02-11T19:07:27.633 回答