我想查看来自 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)
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)