如何同时使用Tensorflow tf.nn.Conv2d进行训练和预测?

时间:2018-11-29 13:43:19

标签: python tensorflow neural-network deep-learning reinforcement-learning

我目前正在深入研究tensorflow,而对tf.nn.Conv2d(input, filter, strides, padding)的正确使用感到有些困惑。尽管乍看之下看起来很简单,但我无法听到以下问题的答案:

我很清楚使用filter, strides, padding。但是,尚不清楚input的正确应用。

我来自强化学习Atari(Pong)问题,在该问题中,我想使用网络进行批量训练,并且(一定概率)还希望在每个步骤中进行预测。这就是说,为了进行训练,我要向网络馈送一整批数据,比如说100,每个单元由3个尺寸为160、128的帧组成。使用tensorflow的NHWC格式,我对input的输入将是一个{{ 1}}的形状为tf.placeholder。因此,为了进行培训,我要喂养100 160x128x3包。

但是,在某些情况下,当预测网络的输出(通过乒乓球桨向上或向下)时,我只向160x128x3的网络一包(即三帧一包)供电。现在这是张量流崩溃的地方。它期望(100,160,128,3)但收到(100,160,128,3)

现在我很困惑。我显然不想将批次大小设置为1,并且始终只提供一个软件包进行培训。但是我该怎么办? (1,160,128,3)如何实现?

如果有人不能将我引导到正确的方向,我们将非常感谢

预先感谢您的帮助! 凯文

1 个答案:

答案 0 :(得分:0)

您需要按以下方式设置占位符  tf.placeholder(shape =(None,160,128,3)....),在第一维中没有任何内容,您的占位符将灵活地适应您输入1或100的任何值。