Inconsitencies/Inaccuracies 在 torchvision.datasets.MNIST 和 Michael Nielsens neuralnetworksanddeeplearning 之间
Inconsitencies/Inaccuracies between torchvision.datasets.MNIST and Michael Nielsens neuralnetworksanddeeplearning
我打印了 pytorch 和 https://github.com/mnielsen/neural-networks-and-deep-learning/tree/master/data 的 mnist 数据集的第一个训练图像的矢量化形式。
对于浮点精度误差来说差异似乎太大了。
第一个 mnist 训练图像的完整差异:
https://www.diffchecker.com/6y6YTFiN
重现代码:
import mnist_loader
import numpy
numpy.set_printoptions(formatter={'float': '{: 0.4f}'.format})
d = mnist_loader.load_data()
print numpy.array(d[0][0][0]).reshape(784,1)
火炬:
import torch
import torchvision
from torchvision import transforms as tf
dtype = torch.float32
transforms = tf.Compose([tf.ToTensor()])
mnist_data = torchvision.datasets.MNIST("./mnist", transform=transforms, download=True)
data_loader = torch.utils.data.DataLoader(mnist_data,
batch_size=500,
shuffle=False,
num_workers=1)
data, target = next(data_loader.__iter__())
print(data[0].reshape(784,1))
有人知道是什么原因造成的吗?
MNIST 图像由 0 到 255(含)范围内的整数像素值组成。为了生成您正在查看的张量,这些整数值已被归一化为介于 0.0 和 1,0 之间,方法是将它们全部除以某个常数因子。看来您的两个来源选择了不同的归一化因子:一个是 255,另一个是 256。
我打印了 pytorch 和 https://github.com/mnielsen/neural-networks-and-deep-learning/tree/master/data 的 mnist 数据集的第一个训练图像的矢量化形式。 对于浮点精度误差来说差异似乎太大了。
第一个 mnist 训练图像的完整差异: https://www.diffchecker.com/6y6YTFiN
重现代码:
import mnist_loader
import numpy
numpy.set_printoptions(formatter={'float': '{: 0.4f}'.format})
d = mnist_loader.load_data()
print numpy.array(d[0][0][0]).reshape(784,1)
火炬:
import torch
import torchvision
from torchvision import transforms as tf
dtype = torch.float32
transforms = tf.Compose([tf.ToTensor()])
mnist_data = torchvision.datasets.MNIST("./mnist", transform=transforms, download=True)
data_loader = torch.utils.data.DataLoader(mnist_data,
batch_size=500,
shuffle=False,
num_workers=1)
data, target = next(data_loader.__iter__())
print(data[0].reshape(784,1))
有人知道是什么原因造成的吗?
MNIST 图像由 0 到 255(含)范围内的整数像素值组成。为了生成您正在查看的张量,这些整数值已被归一化为介于 0.0 和 1,0 之间,方法是将它们全部除以某个常数因子。看来您的两个来源选择了不同的归一化因子:一个是 255,另一个是 256。