《深度学习训练日志》

2019-3-20 20:17

问题:在训练YOLO-V2的目标检测模型时,使用resnet18的主网络架构,并利用其预训练权重,在训练的一段时间后,网络出现NAN值?

解决:经各方面验证发现,网络经过几次迭代之后,发生梯度爆炸,导致梯度更新之后,出现NAN值。网上查询了几种梯度爆炸的解决方式,例如什么减小学习率,残差网络,relu激活,bn层等。显然,这些方式,本模型中已经具备。还有一种方式就是利用tf.clip_by_value函数进行截断。截断分两种,一种是模型计算种出现除0的这种情况,对0值进行截断,另一种就是直接对梯度进行截断。我采用的是对梯度进行截断,因为本模型种没有除0的情况。实验表明,这种方式确实能够解决梯度爆炸的问题,但是对模型收敛的速度似乎有点影响。

  后来,收到其他博客的启发,想到冻结训练的方式。我冻结了预训练部分的权重,只训练初始化部分的权重,效果很明显,模型收敛很快,也没有出现NAN值。待模型的loss下降稳定之后,我再开启全局训练,不知道后期的情况如何......待更。。。

2019-3-20 22:35

接着上一个问题,当loss值稳定之后,我进行全局训练并没有出现NAN值,哈哈哈哈,问题解决!!!!!

2019-4-11 01:44

重点:第一,在训练一个回归任务的网络时,发现预测结果趋向于标签的均值,主要问题样本不均衡。第二,输入数据没有去中心化(输入数据全部大于零或小于零)时,模型的收敛速度明显小于输入已经去中心化数据(输入数据有大于零的值,也有小于零的值)。

你可能感兴趣的:(深度学习,神经网络,tensorflow)