在训练时,用交叉熵损失函数要进行softmax计算,其data和label需要满足一定的条件:
预测的结果返回的值y要是 tensor,不能是numpy array或者list,所以报错;
我的做法是对程序运行调试模式,看预测返回结果的数据类型是否为tensor。
从图可知道,binary_final_logits是list,而我需要获取的是binary_final_logits[0]
所以我将binary_segmenatation_loss = criterion(binary_final_logits, binary_labels)改为binary_segmenatation_loss = criterion(binary_final_logits[0], binary_labels)
如果需要对数据进行转换成tensor,可参考下面代码
list 与 tensor
b= torch.Tensor(a) # b为tensor格斯 a为list格式
参考链接:
https://blog.csdn.net/baoyongshuai1509/article/details/85258428
https://www.cnblogs.com/yeran/p/11121039.html