tf.placeholder_with_default反向传播

时间:2019-01-07 22:09:43

标签: python tensorflow autoencoder

我正在尝试在Tensorflow中训练自动编码器。但是,这种自动编码器只是我的体系结构的一部分。我想要以下工作流程:

输入图像->上游处理的数据->馈入自动编码器->使用编码的图像输出及其渐变。

换句话说,我想要整个编码操作的梯度,包括上游数据处理,而不需要输入图像数据。

我也想自己训练我的自动编码器。因此,我认为我可以将输入图像制作为echo "random1:random2:random3:random4:randomN" | awk -F":" '{print (NF>1)? $1 : ""}' echo "random1:random2:random3:random4:randomN" | sed 's/:.*//' echo "random1:random2:random3:random4:randomN" | cut -d ":" -f1 类型的自动编码器。我的想法是,我可以将上游数据处理直接连接到默认的自动编码器输入中,但也可以允许用户传递训练数据进行训练。

因此,我将自动编码器的输入构造如下:

tf.placeholder_with_default

我的自动编码器涉及多个input_x = tf.Variable(tf.zeros(dtype=tf.float32, shape=[1, 60, 200, 3])) #Will be fed in from upstream, for now, zeros is just for testing self.x = tf.placeholder_with_default(input_x, shape=[None, 60, 200, 3], name='camera') #images are 200 x 60 with 3 channels; x is the input to the autoencoder 的调用。不幸的是,当我尝试使用此设置进行训练时,出现以下错误:

tf.nn.conv2d

当我将代码更改为:

InvalidArgumentError (see above for traceback): Conv2DSlowBackpropInput: input and out_backprop must have the same batch sizeinput batch: 1outbackprop batch: 32 batch_dim: 0

我没问题。

我要正确使用self.x = tf.placeholder(tf.float32, shape=[None, 60, 200, 3], name='camera') 吗?是什么导致错误? (我可以提供更多代码,但如果可能的话,不希望发布我的整个AE)。

1 个答案:

答案 0 :(得分:0)

尝试将您的input_x声明替换为:

input_x =np.zeros([1, 60, 200, 3], dtype=np.float32)