【发布时间】:2021-12-04 16:58:24
【问题描述】:
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))......我错了吗?
【问题讨论】:
标签: pytorch