【问题标题】:How to monitor gradient vanish and explosion in keras with tensorboard?如何使用张量板监控 keras 中的梯度消失和爆炸?
【发布时间】:2018-10-06 13:58:19
【问题描述】:

我想用 keras 监控 tensorboard 中的梯度变化,以确定梯度是消失还是爆炸。我该怎么办?

【问题讨论】:

    标签: python tensorflow keras tensorboard tensorflow-gradient


    【解决方案1】:

    要在 Tensorboard 中可视化训练,请将 keras.callbacks.TensorBoard 回调添加到 model.fit 函数。不要忘记设置write_grads=True 以查看那里的渐变。训练开始后,你就可以跑步了……

    tensorboard --logdir=/full_path_to_your_logs
    

    ... 从命令行将浏览器指向htttp://localhost:6006。请参阅this question 中的示例代码。

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

    • 如果分布高度峰值并集中在 0 附近,则梯度可能正在消失。这是concrete example 在实践中的样子。
    • 如果分布的绝对值随时间快速增长,则梯度呈爆炸式增长。通常同一层的输出值也会很快变成NaNs。

    【讨论】:

    • 另外,为了使这个工作你需要有histogram_freq > 1,因此需要验证数据(它不能是一个生成器,甚至是一个序列)。
    • @J.J. write_grads=True 目前在 tensorflow (2.1.0) 的最新版本中已弃用 github.com/tensorflow/tensorflow/issues/31173 我目前也在寻找解决方案。
    • @ElegantCode 你找到解决办法了吗??
    • @ch271828n ,我一直得到的唯一答案是编写自己的回调来保存渐变并自己可视化它们。
    • @ElegantCode 你能提供一些示例代码/回购吗?谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    • 2021-07-24
    • 1970-01-01
    • 2019-10-07
    • 2023-03-16
    • 2017-02-21
    • 2021-10-08
    相关资源
    最近更新 更多