我目前有一个在张量流中实现的神经网络,但我在训练后进行预测时遇到问题,因为我有 conv2d_transpose 操作,并且这些操作的形状取决于批量大小。我有一个需要 output_shape 作为参数的层:
def deconvLayer(input, filter_shape, output_shape, strides):
W1_1 = weight_variable(filter_shape)
output = tf.nn.conv2d_transpose(input, W1_1, output_shape, strides, padding="SAME")
return output
这实际上用在我构建的一个更大的模型中,如下所示:
conv3 = layers.convLayer(conv2['layer_output'], [3, 3, 64, 128], use_pool=False)
conv4 = layers.deconvLayer(conv3['layer_output'],
filter_shape=[2, 2, 64, 128],
output_shape=[batch_size, 32, 40, 64],
strides=[1, 2, 2, 1])
问题是,如果我使用经过训练的模型进行预测,我的测试数据必须具有相同的批量大小,否则我会收到以下错误。
tensorflow.python.framework.errors.InvalidArgumentError: Conv2DBackpropInput: input and out_backprop must have the same batch size
有什么方法可以预测具有可变批量大小的输入吗?当我查看训练后的权重时,似乎没有任何东西取决于批量大小,所以我不明白为什么这会成为问题。