Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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数据非规范化并没有返回相同的结果_Python_Machine Learning_Neural Network_Keras_Mnist - Fatal编程技术网

Python MNIST数据非规范化并没有返回相同的结果

Python MNIST数据非规范化并没有返回相同的结果,python,machine-learning,neural-network,keras,mnist,Python,Machine Learning,Neural Network,Keras,Mnist,这是我学习的一部分。我知道规范化确实有助于提高准确性,因此将mnist值除以255。这将把所有像素除以255,因此28*28的所有像素的值将在0.0到1.0之间 现在我想用255乘以它,这意味着我们应该得到原始值。但是当我显示图片时,原始图片和非标准化图片都是不同的 (trainX, trainY), (testX, testY) = mnist.load_data() plt.subplot(2,2,1) plt.imshow(trainX[143]) trainX /= 255 p

这是我学习的一部分。我知道规范化确实有助于提高准确性,因此将mnist值除以255。这将把所有像素除以255,因此28*28的所有像素的值将在0.0到1.0之间

现在我想用255乘以它,这意味着我们应该得到原始值。但是当我显示图片时,原始图片和非标准化图片都是不同的

(trainX, trainY), (testX, testY) = mnist.load_data()


plt.subplot(2,2,1)
plt.imshow(trainX[143])

trainX /= 255

plt.subplot(2,2,2)
plt.imshow(trainX[143])


trainX *= 255

plt.subplot(2,2,3)
plt.imshow(trainX[143])
plt.show()
输出:


我错过了什么?。与输入数据的浮点和int数据类型相关的任何内容?

MNIST存储为28x28 uint8 numpy数组,当您除以255时,它会将数据转换为浮点以进行除法,最终成为浮点数组。因此,当您与255相乘时,它仍然是一个浮点数组,matplotlib可能会出于打印目的对其进行不同的解释

要使其正常工作,必须将数据强制转换为uint8,如:

trainX = (trainX * 255).astype(np.uint8)

然后它应该正确地绘制。

我假设它与矩阵的数据类型紧密相连。在将单个矩阵乘以255之前,您检查过它吗?之后呢?谢谢你的回复。我不明白你的意思。sry,您能详细说明一下吗?您是否在乘法前后手动检查了
trainX[143]
的值?似乎有一个数据类型问题,即不是浮点值,而是只得到整数或类似的东西。@Whoami您确定这段代码运行时没有错误吗?因为
trainX/=255
由于类型改变(即从uint到float)。你的Python版本是什么?另外,当我将其更改为
trainX=trainX/255
时,它对我有效,并且所有打印的图像都相同。我正在使用python 3.5.2。