我想查看来自 torch.utils.data.DataLoader 的数据。我怎么能够?

I want to see data from torch.utils.data.DataLoader. How Can I?

import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import torchvision
import torchvision.transforms as transforms

train_set = torchvision.datasets.MNIST(root = './data/MNIST',train = True,download = True,\transform = transfroms.Compose([transfroms.ToTensor()])

print(len(train_set))
# 60000

train_loader = torch.utils.data.DataLoader(train_set, batch_size=100)
print(len(train_loader))
# 600

似乎因为 batch_size,train_loader 的长度减少了。

我认为一批中有 100 个张量和一个分类。 我只想看看它的元素或形状。我能怎么做? 另外,

### Model Omitted ###
model = ConvNet().to(device) 
criterion = nn.CrossEntropyLoss().to(device)
optimizer = torch.optim.Adam(model.parameters(), lr = learning_rate)

for epoch in range(5): 
    avg_cost = 0
    for data, target in train_loader:
        data = data.to(device)
        target = target.to(device)
        optimizer.zero_grad() 
        hypothesis = model(data) 
        cost = criterion(hypothesis, target) 
        cost.backward() 
        optimizer.step() 
        avg_cost += cost / len(train_loader)

    print('[Epoch: {:>4}] cost = {:>.9}'.format(epoch + 1, avg_cost))

我认为每个 epoch 训练有 60,000 个张量,对吗?然后我认为 avg_cost 应该除以 60,000,而不是 600(即 len(train_loader))...我错了吗?

您可以使用下面的代码从 trainloader 获取一批火车数据,您可以轻松检查它的形状。我希望这可以帮助你得到你想要的。

batch= iter(trainloader)
images, labels = batch.next()

print(images.shape)
# torch.Size([num_samples, in_channels, H, W])

print(labels.shape)