问题如下:
运行环境:GPU 1080Ti
代码流程:因为是在之前的一份情感数据集上测试通过的,所以流程整体上应该没有大的问题。
但就是loss一直为nan,也没有报错。
然后经对比测试,同样的数据,同样的代码,在CPU上运行,会报如下错误:
意思就是说:数据标签有问题。
回过头,考虑两份数据标签,发现的确有区别:
之前的情感分类数据为2分类,标签分别为:0和1;
现在的是多个类别的分类,标签为:1,2,3,4,5;注意,后面的数据标签是[1,2,3,4,5],没有从0开始。
如果这种标签直接喂给模型训练的话,按照目前我们的模型结构,最后一层Dense,预测的标签实际上是从0开始的,即[0,1,2,3,4],这样就导致,预测的标签和实际标签永远不一致,在计算loss时会出问题。
所以针对此问题,进行修改,给标签做了个映射,把[1,2,3,4,5],分别映射到[0,1,2,3,4],重新训练就可以正常运行了。
需要注意的是,predict的时候,也要映射回原始的标签。
有此问题也说明,GPU和CPU运行代码上还是有些区别的。