【问题标题】:training loss decrease at first several epochs but jump to a high value suddenly训练损失在最初的几个时期减少,但突然跳到一个高值
【发布时间】:2019-08-05 21:29:43
【问题描述】:
我正在医疗数据集上训练 3D Unet。我试图在只有一个实例的小数据集上过度拟合模型。损失先减少,但突然上升到一个高值。我附上了下面的损失曲线。我在每个卷积层之后添加批量归一化,并在损失中添加 l2 正则化。
损失函数是加权的softmax交叉熵。
优化器是 Adam,初始学习率为 0.0001。
我想知道为什么损失不能稳定下来。这是否意味着损失函数过于平滑?
【问题讨论】:
标签:
python
tensorflow
unity3d-unet
【解决方案1】:
影响损失函数的因素有很多。正如您已经提到的,您更改了初始化权重的方式。其他因素可能是学习率、正则化因素、您正在使用的优化器类型。
虽然你已经提到了其中的一些。
有几点建议:
1.尝试使用dropout。
2. 尝试使用学习率和正则化的不同组合并绘制损失。
另外,我认为使用 Adam 优化器是个好主意。它确实提高了进程的速度。
归根结底,结果大多是经验性的,很大程度上取决于您的数据集。
【解决方案2】:
我改变了初始化权重的方式。目前的训练过程非常稳定。该模型正在按预期收敛。