MNIST数据反规范化并没有给我带来同样的效果

时间:2018-09-19 05:48:04

标签: python machine-learning neural-network keras mnist

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

现在,我厌倦了将255与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()

输出:

enter image description here

我想念什么?与输入数据的float和int数据类型有关吗?

1 个答案:

答案 0 :(得分:1)

MNIST存储为28x28 uint8 numpy数组,当您除以255时,它将数据转换为浮点数以进行除法,最后以float numpy数组的形式进行划分。因此,当您乘以255时,它仍然是一个浮点数组,而matplotlib可能出于绘图目的对它的解释有所不同。

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

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

然后它应该正确绘制。