Я изучаю классификацию изображений с CNN в Pytorch. В то время как я начал строить архитектуру CNN, я получаю 2 проблемы:
Когда я запускаю свой код, я получаю предупреждение -warnings.warn("train_labels has been renamed targets")
Я пытался напечатать потери и точность, используя функцию print
, но она ничего не печатает.
Вот мой код:
def forward(self, x):
out = self.layer1(x)
out = self.layer2(out)
out = out.reshape(out.size(0), -1)
out = self.drop_out(out)
out = self.fc1(out)
out = self.fc2(out)
return out
from torch import optim
model = ConvNet()
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)
total_step = len(train_loader)
loss_list = []
acc_list = []
for epoch in range(num_epochs):
for i, (images, labels) in enumerate(train_loader):
outputs = model(images)
loss = criterion(outputs, labels)
loss_list.append(loss.item())
optimizer.zero_grad()
loss.backward()
optimizer.step()
total = labels.size(0)
_, predicted = torch.max(outputs.data, 1)
correct = (predicted == labels).sum().item()
acc_list.append(correct / total)
if (i + 1) % 100 == 0:
print("Epoch [{}\{}], Step [{}\{}], Loss: {:.4f}, Accuracy: {:.2f}%"
.format(epoch + 1, num_epochs, i + 1, total_step, loss.item(),
correct / total) * 100)
# Test the model
model.eval()
with torch.no_grad():
correct = 0
total = 0
for images, labels in test_loader:
outputs = model(images)
_, predicted = torch.max(outputs.data, 1)
total += labels.size(0)
correct += (predicted == labels).sum().item()
print("Test Accuracy of the model on the 10000 test images: {} %".format((correct / total) * 100))