Deeplearning4j 指出了权重和偏差柱状图中的期望值:对于权重,一些时间之后这些柱状图应该有一个近似高斯的(正常)分布。对于偏差,这些柱状图通常会从 0 开始,并经常以近似高斯(这种情况的一个例外是 LSTM)结束。留意那些向 +/- 无限发散的参数。留意那些变得很大的偏差。这有时可能发生在分类的输出层,如果类别的分布不均匀。 检查层更新,它们应该有一个高斯分布。 34. 尝试不同的优化器 优化器的选择不应当妨碍网络的训练,除非你选择了一个特别糟糕的参数。但是,为任务选择一个合适的优化器非常有助于在最短的时间内获得最多的训练。描述你正在使用的算法的论文应当指定优化器;如果没有,我倾向于选择 Adam 或者带有动量的朴素 SGD。 35. 梯度爆炸、梯度消失 检查隐蔽层的最新情况,过大的值可能代表梯度爆炸。这时,梯度截断(Gradient clipping)可能会有所帮助。 检查隐蔽层的激活值。Deeplearning4j 中有一个很好的指导方针:「一个好的激活值标准差大约在 0.5 到 2.0 之间。明显超过这一范围可能就代表着激活值消失或爆炸。」 36. 增加、减少学习速率 低学习速率将会导致你的模型收敛很慢; 高学习速率将会在开始阶段减少你的损失,但是可能会导致你很难找到一个好的解决方案。 试着把你当前的学习速率乘以 0.1 或 10。 37. 克服 NaNs 据我所知,在训练 RNNs 时得到 NaN(Non-a-Number)是一个很大的问题。一些解决它的方法: 减小学习速率,尤其是如果你在前 100 次迭代中就得到了 NaNs。 NaNs 的出现可能是由于用零作了除数,或用零或负数作了自然对数。 Russell Stewart 对如何处理 NaNs 很有心得()。 尝试逐层评估你的网络,直播,这样就会看见 NaNs 到底出现在了哪里。 原文地址:https://medium.com/@slavivanov/4020854bd607 (责任编辑:本港台直播) |