欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【问题】检验神经网络中是否出现nan的方法

程序员文章站 2024-03-25 19:52:46
...

问题

在用Keras搭建模型训练过程中,遇到了训练了几个batch之后网络中间层的输出出现了nan,基本确定是某除零操作导致,想打印前馈出现nan的样本分析

分析

第一反应是使用.any()函数判断有无nan存在,发现无效,原因是.any()和.all()函数只能判断可以转化为True或False的值,而nan既不等于True也不等于False
google之后发现可以利用nan不等于自身的特性来将问题转化:

>>>np.nan == np.nan
False
>>>np.nan != np.nan
True

所以对于要检验的数组(Tensor)test:

if np.sum(test!=test) != 0print 'nan is in test'   ###test中存在nan

对于上面的sum()函数也可以用.any()来代替,即出现了True的项(自己不等于自己的值,即nan)

相关标签: python nan