hhb*_*994 12 machine-learning epsilon neural-network deep-learning
当我设置时epsilon=10e-8,AdamOptimizer不起作用。当我将它设置为 1 时,它工作得很好。
Nan*_*esh 21
t <- t + 1
lr_t <- learning_rate * sqrt(1 - beta2^t) / (1 - beta1^t)
m_t <- beta1 * m_{t-1} + (1 - beta1) * g
v_t <- beta2 * v_{t-1} + (1 - beta2) * g * g
其中 g 是梯度
变量 <- 变量 - lr_t * m_t / (sqrt(v_t) + epsilon)
epsilon 是为了在梯度几乎为零时更新变量时避免上述方程中的除零误差。因此,理想情况下,epsilon 应该是一个较小的值。但是,分母中的小 epsilon 将进行更大的权重更新,并且随着后续标准化,更大的权重将始终标准化为 1。
所以,我猜当你用小 epsilon 训练时,优化器会变得不稳定。
权衡是,epsilon(和分母)越大,权重更新越小,因此训练进度越慢。大多数情况下,您希望分母能够变小。通常,epsilon 值大于 10e-4 的性能更好。
epsilon 的默认值 1e-8 通常可能不是一个好的默认值。例如,在 ImageNet 上训练 Inception 网络时,当前的最佳选择是 1.0 或 0.1。在这里检查
| 归档时间: |
|
| 查看次数: |
10580 次 |
| 最近记录: |