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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Laox1ao/article/details/79133871

问题

在用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)

猜你喜欢

转载自blog.csdn.net/Laox1ao/article/details/79133871