Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Keras:当使用Adadelta优化器时,学习率是如何变化的?_Python_Machine Learning_Deep Learning_Keras - Fatal编程技术网

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()])此外,请检查以下问题: