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

问题

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值