梯度分布上的 TensorBoard 常数尖峰

Posted

技术标签:

【中文标题】梯度分布上的 TensorBoard 常数尖峰【英文标题】:TensorBoard costant spikes on gradients distributions 【发布时间】:2018-10-07 13:52:26 【问题描述】:

我正在使用 Keras (2.1.6) 和 Tensorflow (1.4.0) 作为后端训练一个自定义短网络。在训练时,我使用 tensorboard 回调作为:

tensorboard = keras.callbacks.TensorBoard(
    log_dir=OUTPUT_PATH,
    histogram_freq=EPOCH_STEPS,
    batch_size=BATCH_SIZE,
    write_grads=True)

这产生了预期的结果,但是当我查看 TensorBoard 上的梯度分布时,我在图表上看到了奇怪的东西,这些东西在 histogram_freq 变量的同一步骤中重复。

例如,对于histogram_freq=1 和具有 1 个内核 (1,1) 的卷积层,分布为:

在两张图片中,您都可以看到间隔为 1 的尖峰。 作为附加信息,正在训练的网络处理分辨率为 320x200 的图像,输出是一个完整的 320x200 图像,与它的标签(分割)进行比较。 也许问题出在这?

【问题讨论】:

【参考方案1】:

一个疯狂的猜测,但看起来梯度在每个纪元开始时会变得疯狂,所以也许你不小心在每个纪元开始时运行了tf.global_variables_initializer()

权重分布是否显示相同的模式?

【讨论】:

感谢 Peter 的回答,我正在使用 Keras,权重分布似乎在不断更新。我会尝试做一个超级小例子,让其他人可以看到相同的行为?也许这可以解释它。 好的,这是个好主意! 这里我在 Keras github 上打开了一个问题(我认为它与此有关):github.com/keras-team/keras/issues/10059。 想法:如果你根本不做验证怎么办?你可以这样测试吗?也许验证搞砸了。 另一件可能的事情是this line 在每个纪元开始时重置事物。

以上是关于梯度分布上的 TensorBoard 常数尖峰的主要内容,如果未能解决你的问题,请参考以下文章

Tensorboard:为啥梯度图上有锯齿形图案?

如何使用 Tensorboard 检测消失和爆炸梯度?

梯度下降和导数的作用

在F5尖峰学堂,分布式架构可以这样创新!

Tensorboard 训练分类算法的tensorboard可视化示例

Tensorboard 训练分类算法的tensorboard可视化示例