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

How to use Tensorflow tf.nn.Conv2d simultaneously for training and prediction?

我目前正在深入研究 tensorflow,我对 tf.nn.Conv2d(input, filter, strides, padding) 的正确使用感到有点困惑。虽然乍一看很简单,但我听不懂以下问题:

filter, strides, padding的用法我很清楚。然而,不清楚 input 的正确应用。

我来自一个强化学习 Atari (Pong) 问题,在这个问题中我想使用网络进行批量训练,并且(以一定的概率)也用于每个步骤中的预测。这意味着,为了进行训练,我正在为网络提供一整批数据,比方说 100,每个单元由 3 个帧组成,大小为 160、128。使用张量流的 NHWC 格式,我对 input 的输入将是 tf.placeholder 的形状 (100,160,128,3)。所以为了训练,我喂了 100 个 160x128x3 的包裹。

但是,在某种情况下预测我的网络的输出(用乒乓球拍向上或向下)时,我只向网络提供一个 160x128x3 的包(即一个三帧包)。现在这是 tensorflow 崩溃的地方。它期望 (100,160,128,3) 但收到 (1,160,128,3)

现在我很困惑。我显然不想将批量大小设置为 1,并且总是只喂一个包进行训练。但是我怎么能在这里继续呢?如何用 tf.nn.conv2d 实现?

如果有人能在这里引导我走向正确的方向,我将不胜感激

提前感谢您的帮助! 凯文

您需要像下面这样设置您的占位符 tf.placeholder(shape=(None,160,128,3) ....) ,在第一个维度中有 None ,您的占位符将灵活地适应您输入的任何值 1 或100.