如何用张量板监测keras中的梯度消失和爆炸?

Joe*_*hia 9 python keras tensorflow tensorboard tensorflow-gradient

我想用keras监测张量板中的梯度变化,以确定梯度是否消失或爆炸.我该怎么办?

Max*_*xim 11

要在Tensorboard中可视化训练,请添加keras.callbacks.TensorBoard回调model.fit功能.不要忘记设置write_grads=True在那里看到渐变.训练开始后,你可以跑......

tensorboard --logdir=/full_path_to_your_logs
Run Code Online (Sandbox Code Playgroud)

...从命令行并将浏览器指向htttp://localhost:6006.请参阅此问题中的示例代码.

要检查消失/爆炸渐变,请注意感兴趣层中的渐变分布和绝对值("分布"选项卡):

  • 如果分布高度峰值并且集中在0附近,则梯度可能消失.这是一个具体的例子,它在实践中看起来如何.
  • 如果分布随着时间的推移在绝对值上快速增长,那么梯度就会爆炸.通常,同一层的输出值NaN也会非常快.

  • @JJ write_grads=True 目前在最新版本的tensorflow(2.1.0)中已弃用 https://github.com/tensorflow/tensorflow/issues/31173 我目前也在寻找解决方案。 (4认同)
  • 另外,要使其工作,您需要有“histogram_freq > 1”,因此需要验证数据(不能是生成器,甚至不能是序列)。 (2认同)