Machine learning 迭代应用keras model fit()时的学习率状态是什么?

Machine learning 迭代应用keras model fit()时的学习率状态是什么?,machine-learning,deep-learning,keras,Machine Learning,Deep Learning,Keras,由于数据集很大,我正在迭代地(在for循环中)应用。我的目标是将数据集分成100个部分,一次读取每个部分并应用方法 我的问题:在每次迭代中,该方法是否从我在模型编译期间设置的初始学习率(lr=0.1)开始?或者,它会记住上次更新的学习率,并将其直接应用于方法的新调用 我的代码示例如下: #定义模型 my_model() #设置优化器 sgd=sgd(lr=0.1,衰变=1e-08,动量=0.9,nesterov=False) #编译模型 compile(loss='classifical\u c

由于数据集很大,我正在迭代地(在for循环中)应用。我的目标是将数据集分成100个部分,一次读取每个部分并应用方法

我的问题:在每次迭代中,该方法是否从我在模型编译期间设置的初始学习率(lr=0.1)开始?或者,它会记住上次更新的学习率,并将其直接应用于方法的新调用

我的代码示例如下:

#定义模型
my_model()
#设置优化器
sgd=sgd(lr=0.1,衰变=1e-08,动量=0.9,nesterov=False)
#编译模型
compile(loss='classifical\u crossentropy',optimizer=sgd,metrics=['accurity'])
#适合模型和训练
对于范围(100)内的j:
打印('从大矩阵提取数据…')
X_列=HDF5矩阵(路径_列,'X',开始=st,结束=ed)
Y_列=HDF5矩阵(路径_列,'Y',开始=st,结束=ed)
打印('配件型号…')
模型拟合(X_序列,Y_序列,批量大小=100,shuffle='batch',nb_历元=1,
验证数据=(X_检验,Y_检验)

更新后的学习率将被存储在optimizer对象
模型中。optimizer
,它只是示例中的
sgd
变量

在诸如
LearningRateScheduler
之类的回调中,学习率变量
model.optimizer.lr
将被更新(为了清晰起见,删除了一些行)

def on_epoch_begin(self、epoch、logs=None):
lr=自我计划(历元)
K.set_值(self.model.optimizer.lr,lr)
但是,当使用
decay
时(如您的示例中),学习率变量不会直接更新,而是更新变量
model.optimizer.iterations
。此变量记录模型拟合中使用的批次数量,并在
SGD中计算衰减学习率。get_updates()
通过以下方式:

lr=self.lr
如果自初始衰减>0:
lr*=(1./(1.+自衰变*K.cast(自衰变),
K.d类型(自衰变)
因此,在任何一种情况下,只要模型没有重新编译,它就会在新的
fit()
调用中使用更新的学习率