Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么在MNIST教程中使用负整形(-1)?_Python_Numpy_Tensorflow - Fatal编程技术网

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的答案相比有什么贡献?这个答案已经给出了。