model = Classifier()
criterion = nn.NLLLoss()
optimizer = optim.Adam(model.parameters(), lr=0.003)
epochs = 1
steps = 0
train_losses, test_losses = [], []
for e in range(epochs):
running_loss = 0
for images, labels in trainloader:
optimizer.zero_grad()
log_ps = model(images)
loss = criterion(log_ps, labels)
loss.backward()
optimizer.step()
running_loss += loss.item()
else:
## TODO: Implement the validation pass and print out the validation accuracy
t_p,t_class= log_ps.topk(1,dim=1)
print("t_class.type=",type(t_class))
print("t_class=",t_class)
print("t_class=",t_class.size())
equals = t_class==labels.view(t_class.size())
accuracy = torch.mean(equals.type(torch.FloatTensor))
#print("type(accuracy)=",type(accuracy))
#accuracy = accuracy.type(torch.FloatTensor)
print(f'Accuracy: {accuracy.item()*100}%')
#result
t_class.type= <class 'torch.Tensor'> t_class= tensor([[ 8], [ 8], [ 2], [ 3], [ 9], [ 7], [ 0], [ 9], [ 2], [ 1], [ 6], [ 3], [ 0], [ 4], [ 4], [ 9], [ 2], [ 9], [ 3], [ 2], [ 0], [ 1], [ 7], [ 9], [ 8], [ 2], [ 9], [ 1], [ 5], [ 2], [ 2], [ 7]]) t_class= torch.Size([32, 1]) Accuracy: 87.5%