在Tensorflow的MNIST教程中,我们将最后一个Pool层的输出重新整形为单个向量。编写的代码是:
h_pool2_flat = tf.reshape(h_pool2, [-1, 7*7*64])
什么是-1指数?我们不是只想将输出整形为单个向量,那么为什么我们不仅仅重塑为:[1,7 * 7 * 64]?
提前致谢!
答案 0 :(得分:9)
-1表示自动展开。例如,具有[-1,7 * 7 * 64]的重塑将将[19 * 7 * 7 * 64]的1维形状转换为[19,7 * 7]的二维形状。 * 64]。
另一个例子,一个[5,-1,7]的重塑会将一维形状(例如[70])转换为[5,2,7]的三维形状。
答案 1 :(得分:4)
将推断出-1。
因此,NumPy或TensorFlow将根据传入元素和指定的其他尺寸推断尺寸大小应该是什么
答案 2 :(得分:1)
输入层-1的第一个形状维度指的是批量大小,它可能是可变的。
例如我们可能有 (-1, 28, 28, 1) 的输入形状,这意味着我们可以输入尺寸为 (28, 28, 1) 的数据(例如图像),这些数据在 中接收批次大小可变。批量大小可以是 32 或 128,或者不是,它将自动应用于图层。它也适用于其他层,例如输出层也可能具有 (-1, 10) 的形状,其中第一维也表示可变批量大小,它将在运行时替换为正确的批量大小。