将Keras模型的损失函数乘以某个常数C,并将其学习速率除以C

时间:2017-10-18 12:06:25

标签: keras

在Keras中,如果你将模型的损失函数乘以某个常数C,并且将学习率除以C,那么训练过程中是否会出现差异" ?

我有一个由Keras实施的模型。我将损失函数定义为:

def my_loss(y_true, y_est): 
     return something

在第一个场景中,我使用学习率等于0.005的Adam优化器,并使用该丢失函数和优化器编译模型。我将模型拟合到一组训练数据上,并观察到在不到100个时期内它的损失从0.2下降到0.001。

在第二种情况下,我将损失函数更改为:

def my_loss(y_true, y_est):
    return 1000 * something

并且优化器的学习率为0.000005。然后我用新的损失函数和优化器编译模型,看看它的损失函数会发生什么 根据我的理解,由于新损失的梯度是先前梯度的1000倍,并且新学习率是先前学习率的0.001倍,在第二种情况下,损失函数应该从200减少到1超过100个时代。但令人惊讶的是,我观察到损失函数大约在200左右并且几乎没有减少。

有人有任何理由吗?

1 个答案:

答案 0 :(得分:0)

如果您尝试使用SGD,结果将是您期望的。但是,损失规模对亚当没有影响。我建议您了解有关亚当的公式。因此,您只是更改了网络的学习速度,而学习速度对于您的网络来说太小了。