pytorch中 .topk(1,dim=1)返回值必须是两个,否则返回一个值的时候是个元祖,不方便处理第二个元素的大小

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%
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值