为什么 MNIST 显示为 4 层深的列表?
Why is MNIST showing as a list 4 levels deep?
在 MNIST 上使用 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]]],
我期待一个对应于三层深度列表的张量:一个图像列表,每一个都是一个行列表,每一个都是一个数字列表。或者换句话说,最里面的 []
是一行,接下来的 []
是图像,最外面的 []
是图像列表。
但是它有四层深。
为什么要加关?
4 个级别是
- 批量
- 频道
- 行
- 栏目
在 MNIST 上使用 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]]],
我期待一个对应于三层深度列表的张量:一个图像列表,每一个都是一个行列表,每一个都是一个数字列表。或者换句话说,最里面的 []
是一行,接下来的 []
是图像,最外面的 []
是图像列表。
但是它有四层深。
为什么要加关?
4 个级别是
- 批量
- 频道
- 行
- 栏目