如何同时使用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.
我目前正在深入研究 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.