BatchNorm层测试出现nan的查bug之旅
1、前言
在caffe中使用BatchNorm层很简单,只要注意一点,在训练时将use_global_states设为false,测试前向阶段将use_global_states设为true即可。在tensorflow中,其实也不难(具体可参考我的另一外博客:https://blog.youkuaiyun.com/LxDamon/article/details/108762087),稍微复杂一点点,只要注意batchnorm的mean和variance不是trainable的变量,只是会计算更新,简单理解就是它们不参与反向传播,只有BN层的尺度因子gamma和偏移因子beta是需要学习即进行反向传播的,这里就不展开讲BN的原理(后面会单拎一篇博客仔细讲解与分析BN的原理)。在tensorflow中首先需要利用tf.GraphKeys.UPDATE_OPS将需要更新的mean和variance变量收集到update_ops列表中,然后训练时设置trainable为True,测试推理时将trainable设为False,一般做好这两点,基本BN就可以正常使用,但是接下来的bug却困扰到我了。
2、bug的现象
训练过程中利用tensorboar