运行李宏毅老师机器学习课程第三个项目时提示类型错误,求大佬解答。
白露iii 发布于2021-09-13 浏览:102 回复:2
0
收藏
最后编辑于2021-09-14
在运行李宏毅老师机器学习课程第三个项目食物图片分类所给的代码运行到这一段时
for epoch in range(epoch_num):           #第一个循环是epoch,在epoch中取一个batch一个batch的数据
    epoch_start_time = time.time()
    train_acc = 0.0
    train_loss = 0.0
    val_acc = 0.0
    val_loss = 0.0

    #模型训练
    model.train()
    for img, label in train_loader():          #前面封装好的loader
        optimizer.clear_grad()                 #每次清一下梯度
        pred = model(img)                      #把输入通过model,调用了forward方法,得到结果
        step_loss = loss(pred, label)          #算loss
        step_loss.backward()                   #backward计算给定的 Tensors 的反向梯度。
        optimizer.step()                       #step通过backward计算出来的梯度来更新参数

        #算准确率和损失
        train_acc += np.sum(np.argmax(pred.numpy(), axis=1) == label.numpy()) #numpy()将tensor转换为numpy:
        #np.argmax返回一个numpy数组中最大值的索引值
        train_loss += step_loss.numpy()[0]

    #模型验证
    model.eval()
    for img, label in val_loader():
        pred = model(img)
        step_loss = loss(pred, label)

        val_acc += np.sum(np.argmax(pred.numpy(), axis=1) == label.numpy())
        val_loss += step_loss.numpy()[0]

    # 将结果打印出来
    print('[%03d/%03d] %2.2f sec(s) Train Acc: %3.6f Loss: %3.6f | Val Acc: %3.6f loss: %3.6f' % \
          (epoch + 1, epoch_num, \
           time.time() - epoch_start_time, \
           train_acc / traindataset.__len__(), \
           train_loss / traindataset.__len__(), \
           val_acc / valdataset.__len__(), \
           val_loss / valdataset.__len__()))
​
报错:ValueError: (InvalidArgument) Tensor holds the wrong type, it holds int, but desires to be int64_t.找不到在哪改,求大佬解答,感谢!
收藏
点赞
0
个赞
共2条回复 最后由白露iii回复于2021-09-14
#3白露iii回复于2021-09-14
#2 YY应觉月光寒回复
可以先从train_loader内的数据处理开始检查检查

谢谢

0
#2YY应觉月光寒回复于2021-09-13

可以先从train_loader内的数据处理开始检查检查

0
快速回复
TOP
切换版块