Python Keras:当使用Adadelta优化器时,学习率是如何变化的?
例如,在编译网络模型时,我使用优化器的Python Keras:当使用Adadelta优化器时,学习率是如何变化的?,python,machine-learning,deep-learning,keras,Python,Machine Learning,Deep Learning,Keras,例如,在编译网络模型时,我使用优化器的Adadelta,那么学习率将随时间变化(但什么是迭代次数?),我如何将学习率值记录到控制台 model.compile(loss=keras.losses.mean_squared_error, optimizer= keras.optimizers.Adadelta()) 在lr中,学习率刚刚开始?该规则与衰减更新相关。ADADDelta是一种自适应学习率方法,它使用梯度的指数衰减平均值 看看,学习率是根据衰减重新计算的,比如: lr
Adadelta
,那么学习率
将随时间变化(但什么是迭代次数
?),我如何将学习率值记录到控制台
model.compile(loss=keras.losses.mean_squared_error,
optimizer= keras.optimizers.Adadelta())
在
lr
中,学习率刚刚开始?该规则与衰减更新相关。ADADDelta是一种自适应学习率方法,它使用梯度的指数衰减平均值 看看,学习率是根据衰减重新计算的,比如:
lr = self.lr
if self.initial_decay > 0:
lr *= (1. / (1. + self.decay * K.cast(self.iterations, K.dtype(self.decay))))
是的,lr
才刚刚开始学习
要在每个历元之后打印它,如@orabis所述,您可以创建一个回调类:
class YourLearningRateTracker(Callback):
def on_epoch_end(self, epoch, logs=None):
lr = self.model.optimizer.lr
decay = self.model.optimizer.decay
iterations = self.model.optimizer.iterations
lr_with_decay = lr / (1. + decay * K.cast(iterations, K.dtype(decay)))
print(K.eval(lr_with_decay))
然后在调用model.fit()时将其实例添加到回调中,如:
model.fit(..., callbacks=[YourLearningRateTracker()])
但是,请注意,默认情况下,Adadelta的
decay参数为零,并且不是“标准”参数的一部分,因此在使用默认参数时,您的学习率不会更改其值。
我怀疑decay不打算与Adadelta一起使用
另一方面,rho
参数默认为非零,它不描述学习速率的衰减,而是对应于在每个时间步保持的梯度分数(根据
我在和上找到了一些相关信息。你的意思是更新规则
lr=lr*alpha
?无论如何,Adadelta
有其他参数。Adadelta扩展Adagrad以更改更新学习率的方式。Adagrad根据梯度的历史更新和缩放alpha参数,这导致学习速率单调下降。另一方面,Adadelta将渐变的累积历史限制为固定大小,即所有过去平方渐变的衰减平均值。查看以下链接了解更多信息:是的,我知道每个优化器都有自己的学习率更新策略,现在我只需要打印/记录/查看学习率。可以使用“on_epoch_end”上的回调和记录学习率来完成。类似于以下内容:model.fit(…,callbacks=[YourLearningRateTracker()])此外,请检查以下问题: