Pytorch 为什么MNIST显示为4个级别的列表?
在MNIST上使用PyTorch进行一些简单代码的实验,我对它如何表示数据的一个方面感到困惑;也许我只是忽略了一些非常明显的事情 给定 及 我明白了 我期望一个张量对应一个三层的列表:一个图像列表,每个图像列表是一个行列表,每个行列表是一个数字列表。或者换句话说,最里面的Pytorch 为什么MNIST显示为4个级别的列表?,pytorch,mnist,Pytorch,Mnist,在MNIST上使用PyTorch进行一些简单代码的实验,我对它如何表示数据的一个方面感到困惑;也许我只是忽略了一些非常明显的事情 给定 及 我明白了 我期望一个张量对应一个三层的列表:一个图像列表,每个图像列表是一个行列表,每个行列表是一个数字列表。或者换句话说,最里面的[]是一行,下一个[]是一个图像,最外面的[]是图像列表 但是它有四层深 为什么要增加级别?4个级别 批处理 渠道 划船 纵队 啊!!我习惯于这样的想法,即每个像素的通道都是红色/绿色/蓝色,因此如果存在,它将位于最里面。我想知
[]
是一行,下一个[]
是一个图像,最外面的[]
是图像列表
但是它有四层深
为什么要增加级别?4个级别
啊!!我习惯于这样的想法,即每个像素的通道都是红色/绿色/蓝色,因此如果存在,它将位于最里面。我想知道他们为什么把它放在外面,就在批处理下。Pytorch使用这种格式[批处理、通道、行、列],也许是这样,通道将始终位于同一个位置,不管它下面有多少个维度?好了,这就清楚了。谢谢
train_loader = torch.utils.data.DataLoader(
torchvision.datasets.MNIST(
"data",
train=True,
download=True,
transform=torchvision.transforms.Compose(
[
torchvision.transforms.ToTensor(),
torchvision.transforms.Normalize((0.1307,), (0.3081,)),
]
),
),
batch_size=batch_size_train,
shuffle=True,
)
for batch_idx, (data, target) in enumerate(train_loader):
print(data)
tensor([[[[-0.4242, -0.4242, -0.4242, ..., -0.4242, -0.4242, -0.4242],
[-0.4242, -0.4242, -0.4242, ..., -0.4242, -0.4242, -0.4242],
[-0.4242, -0.4242, -0.4242, ..., -0.4242, -0.4242, -0.4242],
...,
[-0.4242, -0.4242, -0.4242, ..., -0.4242, -0.4242, -0.4242],
[-0.4242, -0.4242, -0.4242, ..., -0.4242, -0.4242, -0.4242],
[-0.4242, -0.4242, -0.4242, ..., -0.4242, -0.4242, -0.4242]]],
[[[-0.4242, -0.4242, -0.4242, ..., -0.4242, -0.4242, -0.4242],
[-0.4242, -0.4242, -0.4242, ..., -0.4242, -0.4242, -0.4242],
[-0.4242, -0.4242, -0.4242, ..., -0.4242, -0.4242, -0.4242],
...,
[-0.4242, -0.4242, -0.4242, ..., -0.4242, -0.4242, -0.4242],
[-0.4242, -0.4242, -0.4242, ..., -0.4242, -0.4242, -0.4242],
[-0.4242, -0.4242, -0.4242, ..., -0.4242, -0.4242, -0.4242]]],