代码之家  ›  专栏  ›  技术社区  ›  Karnivaurus

张力流训练曲线中的大尖峰

  •  1
  • Karnivaurus  · 技术社区  · 6 年前

    下面是我使用TensorFlow 1.9的训练曲线:

    enter image description here

    是什么导致了训练损失的急剧上升?

    一些细节:

    • 该网络有5层,接收图像,并预测4维向量。
    • 训练是用50号的小批来完成的。
    • 对于每个纪元,我的整个数据集都是迭代的。因此,尖峰不是由于随机抽样一个“困难”的小批量。
    • 我使用Adam优化程序,使用TensorFlow的默认参数,学习率为0.001。
    • 输出(和输入)数据标准化为零平均值和标准偏差为1。
    • 我已经检查了这些尖峰出现的点,而不是一个高损失的单个训练示例,通常在一个小批量内有几个高损失的训练示例。

    作为一个例子,网络对以下两个例子所作的预测是: [ 33.939026 -69.096344 75.832924 35.009373] [ -87.652336 52.033615 -94.49006 -168.82799 ] ,其中这些示例的标签都是: [ 2.041661e-02 -4.019599e-01 -1.813140e-04 1.500889e-01] . 因此,这分别导致了3209和479的损失。

    例如,如果损失是“正常”的,典型的预测是: [ 2.041661e-02 -4.019650e-01 -1.770628e-04 1.500889e-01] 标签为: [-1.135244 -0.091564 0.46258 -0.078056] .

    因此,似乎突然之间,对一些训练例子的预测有了一个巨大的幅度,然后这个幅度很快就消失到一个更可接受的水平。

    你知道是什么引起的,或者我可以怎样调试它吗?

    0 回复  |  直到 6 年前