之前训练网络时,会先编写学习率随训练epoch的增加而逐渐减低的函数,然后选取一个相对较大的学习率(一般从e-2量级开始),选取一个epoch能够接受的batchsize,如果loss稳定下降较快,则开始训练.从未体验过学习率和batchsize搭配之难.
最近新看了一篇论文ABCNN(有空再细讲),采用开源的tensorflow工程训练一下,效果很好,因工程需要,开始将其移植到pytorch框架下,移植完毕后,关于loss函数遇到不少问题,在此记录.
1.学习率随epoch降低的函数
def adjust_learning_rate(learning_rate, learning_rate_decay, optimizer, epoch):
"""Sets the learning rate to the initial LR multiplied by learning_rate_decay(set 0.98, usually) every epoch"""
learning_rate = learning_rate

在深度学习训练过程中,作者遇到了loss不收敛和变为NaN的问题。针对这些问题,文章提供了详细的解决方案。对于loss变nan,检查了训练数据、网络中的除法操作和开方操作。而对于loss不收敛,作者建议保持合适的batchsize,检查梯度回传,确认数据正确性,适当调整学习率,并根据batchsize调整学习率。

2万+

被折叠的 条评论
为什么被折叠?



