【问题标题】:How to use Tensorflow tf.nn.Conv2d simultaneously for training and prediction?如何同时使用 Tensorflow tf.nn.Conv2d 进行训练和预测?
【发布时间】:2019-05-01 14:22:50
【问题描述】:

我目前正在更深入地研究 tensorflow,我对正确使用 tf.nn.Conv2d(input, filter, strides, padding) 感到有些困惑。虽然乍一看很简单,但我无法理解以下问题:

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

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

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

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

如果有人能在这里引导我走向正确的方向,非常感谢

提前感谢您的帮助! 凯文

【问题讨论】:

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


    【解决方案1】:

    您需要按如下方式设置占位符 tf.placeholder(shape=(None,160,128,3) ....) ,在第一个维度中使用 None ,您的占位符将灵活地适应您提供 1 或 100 的任何值。

    【讨论】:

    • 谢谢!我实际上之前尝试过,但显然在从卷积层转换到完全连接层时遇到了重塑问题。但是,由于您的回答,我再次尝试,后来解决了重塑问题。非常感谢!凯文
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 2022-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 2017-01-15
    相关资源
    最近更新 更多