【发布时间】:2020-12-24 00:32:16
【问题描述】:
我到处找,但找不到我想要的。基本上,MNIST 数据集包含像素值在[0, 255] 范围内的图像。人们说,总的来说,最好做到以下几点:
- 将数据缩放到
[0,1]范围。 - 将数据归一化,使其均值和单位标准差为零
(data - mean) / std。
不幸的是,没有人展示过如何做到这两件事。它们都减去0.1307 的平均值并除以0.3081 的标准差。这些值基本上是数据集的均值和标准差除以 255:
from torchvision.datasets import MNIST
import torchvision.transforms as transforms
trainset = torchvision.datasets.MNIST(root='./data', train=True, download=True)
print('Min Pixel Value: {} \nMax Pixel Value: {}'.format(trainset.data.min(), trainset.data.max()))
print('Mean Pixel Value {} \nPixel Values Std: {}'.format(trainset.data.float().mean(), trainset.data.float().std()))
print('Scaled Mean Pixel Value {} \nScaled Pixel Values Std: {}'.format(trainset.data.float().mean() / 255, trainset.data.float().std() / 255))
这会输出以下内容
Min Pixel Value: 0
Max Pixel Value: 255
Mean Pixel Value 33.31002426147461
Pixel Values Std: 78.56748962402344
Scaled Mean: 0.13062754273414612
Scaled Std: 0.30810779333114624
但是很明显,以上都没有!结果数据 1) 不会介于 [0, 1] 之间,并且不会有平均值 0 或标准 1。事实上,这就是我们正在做的事情:
[data - (mean / 255)] / (std / 255)
这与这个非常不同
[(scaled_data) - (mean/255)] / (std/255)
其中scaled_data 就是data / 255。
【问题讨论】:
标签: python machine-learning pytorch mnist