当前位置: 首页 > 工具软件 > Numpy.GPU > 使用案例 >

解决pytorch报错:'numpy.ndarray' object has no attribute 'log_softmax'

史淇
2023-12-01

在打印出train的loss后,想打印出validation的loss来观察网络的学习情况,然后就把val的infer结果与val的label直接放进cross entropy loss里,结果出现报错。

'numpy.ndarray' object has no attribute 'log_softmax'

经查找,交叉熵中要进行softmax计算,data和label需要满足一定的条件:

1. 预测的结果返回的值y要是 tensor,不能是numpy array,我在计算val acc的时候写了predict的函数,返回numpy array,我直接调用predict结果,所以报错;

2. label值注意wrap到varible里:

    ylabel = Variable(tlabel).squeeze()

3. 开启GPU的话,数据data和label要处理:

    if args.cuda and torch.cuda.is_available():

            x = x.cuda()

            y = y.cuda()
 

4. 输入 test_loss = criterion(y, ylabel),没有报错,问题解决。

 
 类似资料: