使用TensorFlow在训练曲线中出现巨大峰值

时间:2018-08-09 15:33:01

标签: tensorflow

以下是我使用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 个答案:

没有答案