深度学习模型输出为nan的一个隐蔽可能原因以及如何用pandas解决这个nan问题

编程入门 行业动态 更新时间:2024-10-18 16:55:30

之前搭深度学习模型时,遇到过一个很棘手的问题:
我的模型由三部分组成,前两部分读取某些特征,第三部分(LSTM)读取另外一些特征

当我写好代码开始训练时,预测输出很快就会变成
[nan,
nan,
nan,

nan]

上网查了很多相关资料,

https://wwwblogs/bonelee/p/8603750.html

总结起来发现大概有这样几个原因:
学习率选取不当
激活函数选取不当
梯度爆炸

然后我把第三部分暂时隔离出模型,发现不存在这个问题,这时我意识到可能并非上面的常见原因导致
而且我是用的loss时MSE而不是cross Entropy 似乎不应该出现类似的问题
因为三部分读取不同特征,我开始将注意力转移到我的输入特征中,尤其关注第三部分的输入


经过检查,发现是问题网络的输入中存在隐蔽的NaN值,我在预处理时忽略掉了


#假设你的输入DataFrame的名字时XXX
#可以使用下面这个语句来判断输入数据中是否包含隐蔽的Nan
XXX.isnull().any()
#更加具体地,可以使用下面这个语句来输出具体时哪些列包含nan
XXX.isnull()

到这里,我似乎发现了原因,于是,为了验证确实是这个原因造成的,我决定使用pandas处理这些隐蔽的Nan值

使用pandas处理nan

参考以下博客总结

https://blog.csdn/Tyro_java/article/details/81396000

XXX = XXX.dropna(axis = 1)#axis=1为列 =0为行
XXX = XXX.fillna(method = 'ffill', axis = 1)#用列上一个值填充
XXX = XXX.fillna(method = 'backfill', axis = 0)#用下一个
XXX = XXX.interpolate(method = 'linear', axis = 1)#用线性插值法

更多推荐

深度学习模型输出为nan的一个隐蔽可能原因以及如何用pandas解决这个nan问题

本文发布于:2023-06-14 09:48:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1462684.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:如何用   深度   模型   原因   nan

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!