Machine learning 在MNIST教程中如何预处理MNIST数据集?

Machine learning 在MNIST教程中如何预处理MNIST数据集?,machine-learning,neural-network,tensorflow,conv-neural-network,Machine Learning,Neural Network,Tensorflow,Conv Neural Network,我一直在想,数据集是如何预处理的。特别是,我认为图像通常有整数值来表示像素的强度。例如,在0到255的范围内,我就是这么想的。然而,当我检查其中一个像素值时,我得到了浮点值,这与我预期的有所不同。检查向量的结尾: 0.80784321,0.96470594,0.6156863,0,,0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.

我一直在想,数据集是如何预处理的。特别是,我认为图像通常有整数值来表示像素的强度。例如,在0到255的范围内,我就是这么想的。然而,当我检查其中一个像素值时,我得到了浮点值,这与我预期的有所不同。检查向量的结尾:

0.80784321,0.96470594,0.6156863,0,,0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.01568628, 0.45882356, 0.27058825, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ])

为了检查maybe是否被归一化,使得每个向量都是单位范数,我做了:

from numpy import linalg as LA
LA.norm(X_train[0,:])
10.20854430695328
但可以看出,向量的范数大于1

因此,我认为可能它们没有像我所想的那样进行缩放,可能它们是使用统计标准化进行缩放的,如
Z=X-mu/std
。为了验证这个假设,我对图像进行了缩放。为此,我使用以下命令检查了数据的平均值和标准偏差:

X_train.mean(axis=0)

当我这么做的时候,我得到的是没有标准化的向量,也就是说,它们既没有平均值0,也没有标准偏差1。中庸者说:

     1.48377906e-04,   3.16577558e-04,   4.71443878e-04,
     7.53226424e-04,   1.28991095e-03,   1.64713022e-03,
     1.94303042e-03,   2.20263827e-03,   2.67707680e-03,
     2.33504470e-03,   1.88178264e-03,   1.35629241e-03,
     7.74688105e-04,   3.29839591e-04,   1.72834236e-04,
     6.32442098e-05,   5.16221064e-05,   8.55615031e-06,
     0.00000000e+00,   0.00000000e+00,   0.00000000e+00,
     0.00000000e+00])
     9.73316794e-03,   1.48564994e-02,   1.79109386e-02,
     2.39294057e-02,   2.96610268e-02,   3.52616872e-02,
     3.74964883e-02,   3.94864147e-02,   4.46018863e-02,
     4.14498684e-02,   3.67526868e-02,   3.19768868e-02,
     2.35492900e-02,   1.51583259e-02,   1.10631365e-02,
     6.06049238e-03,   6.49226612e-03,   1.41963927e-03,
     0.00000000e+00,   0.00000000e+00,   0.00000000e+00,
     0.00000000e+00])
其中一个说:

     1.48377906e-04,   3.16577558e-04,   4.71443878e-04,
     7.53226424e-04,   1.28991095e-03,   1.64713022e-03,
     1.94303042e-03,   2.20263827e-03,   2.67707680e-03,
     2.33504470e-03,   1.88178264e-03,   1.35629241e-03,
     7.74688105e-04,   3.29839591e-04,   1.72834236e-04,
     6.32442098e-05,   5.16221064e-05,   8.55615031e-06,
     0.00000000e+00,   0.00000000e+00,   0.00000000e+00,
     0.00000000e+00])
     9.73316794e-03,   1.48564994e-02,   1.79109386e-02,
     2.39294057e-02,   2.96610268e-02,   3.52616872e-02,
     3.74964883e-02,   3.94864147e-02,   4.46018863e-02,
     4.14498684e-02,   3.67526868e-02,   3.19768868e-02,
     2.35492900e-02,   1.51583259e-02,   1.10631365e-02,
     6.06049238e-03,   6.49226612e-03,   1.41963927e-03,
     0.00000000e+00,   0.00000000e+00,   0.00000000e+00,
     0.00000000e+00])

因此,我想知道,在tensorflow教程中,MNIST数据集是如何预处理的,因为我已经用尽了所有可能的方法。

如果你有向量中的数据,我们称之为MNIST,你可以检查最大值是多少

numpy.amax(mnist)

应产生1,因此意味着向量中的所有值都在0和1之间,因此标准化。

如果向量中有数据,我们称之为mnist,则可以检查最大值是多少

numpy.amax(mnist)
应产生1,因此意味着向量中的所有值都在0和1之间,因此标准化