Python 为什么在MNIST教程中使用负整形(-1)?
阅读时,我绊了一下Python 为什么在MNIST教程中使用负整形(-1)?,python,numpy,tensorflow,Python,Numpy,Tensorflow,阅读时,我绊了一下 x_image = tf.reshape(x, [-1,28,28,1]) 28,28来自宽度、高度,1来自频道数量。但是为什么-1 我猜这与小批量训练有关,但我想知道为什么-1而不是1(在numpy中似乎给出了相同的结果)。 (可能有关联:为什么numpy的重塑对-1、-2和1给出相同的结果?-1意味着该维度中的长度是推断出来的。这是基于这样一个约束条件来完成的,即当重塑时,ndarray或Tensor中的元素数量必须保持不变。在本教程中,每个图像都是一个行向量(784个
x_image = tf.reshape(x, [-1,28,28,1])
28,28
来自宽度、高度
,1
来自频道数量。但是为什么-1
我猜这与小批量训练有关,但我想知道为什么-1
而不是1
(在numpy中似乎给出了相同的结果)。
(可能有关联:为什么numpy的重塑对
-1
、-2
和1
给出相同的结果?-1
意味着该维度中的长度是推断出来的。这是基于这样一个约束条件来完成的,即当重塑时,ndarray
或Tensor
中的元素数量必须保持不变。在本教程中,每个图像都是一个行向量(784个元素),并且有很多这样的行(让它成为n
,因此有784n
元素)。所以,当你写作的时候
x_image=tf.重塑(x,[-1,28,28,1])
TensorFlow可以推断
-1
是您正在阅读的MNIST教程中的n
输入层的所需形状:[批次大小,28,28,1]
x_image=tf.重塑(x,[-1,28,28,1])
这里输入x的-1指定应根据x中输入值的数量动态计算此维度,并保持所有其他维度的大小不变。这允许我们将batch_size(值为-1的参数)视为可以调整的超参数。−1表示需要根据张量的总元素保持不变的规则自动推断当前轴上的长度您看过np.reformate()文档了吗?请参阅newshape的描述:谢谢,这很有意义。我刚刚找到了医生,你的答案与Priyathams的答案相比有什么贡献?这个答案已经给出了。