我正在尝试对可变大小的数据批量使用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
?有没有办法指定变量批量维度?如果输入批量大小变化会发生什么?
答案 0 :(得分:5)
N.B。 tf.nn.deconv2d()
将在下一版TensorFlow(0.7.0)中调用tf.nn.conv2d_transpose()
。
output_shape
的{{1}}参数接受计算的tf.nn.deconv2d()
作为其值,这使您可以指定动态形状。例如,假设您的输入定义如下:
Tensor
...然后可以在运行时计算特定步骤的批量大小:
# N.B. Other dimensions are chosen arbitrarily.
input = tf.placeholder(tf.float32, [None, 24, 24, 5])
使用此值,您可以使用tf.pack()
将batch_size = tf.shape(input)[0]
参数构建到output_shape
:
tf.nn.deconv2d()