【问题标题】:Why the negative reshape (-1) in MNIST tutorial?为什么 MNIST 教程中的负重塑 (-1)?
【发布时间】:2017-06-10 11:02:54
【问题描述】:

阅读the Tensorflow MNIST tutorial,我跌跌撞撞

x_image = tf.reshape(x, [-1,28,28,1])

28, 28来自width, height1来自通道数。但是为什么-1

我猜这与小批量训练有关,但我想知道为什么 -1 而不是 1(这似乎在 numpy 中给出了相同的结果)。 (可能相关:为什么 numpy 的重塑对于 -1-21 给出相同的结果)?

【问题讨论】:

标签: python numpy tensorflow


【解决方案1】:

-1 表示推断该维度中的长度。这是基于ndarrayTensor 中的元素数量在重构时必须保持不变的约束来完成的。在本教程中,每个图像都是一个行向量(784 个元素),并且有很多这样的行(假设是 n,所以有 784n 元素)。所以,当你写

x_image = tf.reshape(x, [-1, 28, 28, 1])

TensorFlow 可以推断出-1n

【讨论】:

【解决方案2】:

在您正在阅读的 MNIST 教程中,输入层所需的形状:[batch_size, 28, 28, 1]

x_image = tf.reshape(x, [-1,28,28,1])

此处输入 x 的 -1 指定应根据 x 中输入值的数量动态计算此维度,同时保持所有其他维度的大小不变。这允许我们将 batch_size(参数值为 -1) 视为我们可以调整的超参数。

【讨论】:

  • 与 Priyathams 的回答相比,您的回答有何贡献?
【解决方案3】:

-1表示当前轴上的长度需要按照张量总元素不变的规则自动推导

【讨论】:

    猜你喜欢
    • 2017-06-06
    • 2018-05-22
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    • 2018-11-05
    • 2018-01-04
    • 2017-04-13
    • 1970-01-01
    相关资源
    最近更新 更多