Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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
Keras 如何显示历元后最后使用的学习速率_Keras - Fatal编程技术网

Keras 如何显示历元后最后使用的学习速率

Keras 如何显示历元后最后使用的学习速率,keras,Keras,我尝试了几种方法来显示在Keras的最后一个时代有效使用的模型的学习率 一些研究表明,可以使用回调更改学习率,或者使用自定义指标显示学习率。 但无论我用什么方法,显示的学习率始终是原始的学习率 一些答案意味着重新计算利率应基于公式的多少。但是我想要的只是得到用于反向传播的学习速率,而不是根据算法计算它 以下是我使用的一些代码: callback\u list=[] 度量_列表=[“精度”] #添加检查点以保存权重,以防测试集acc得到改进 #... 如果显示\学习\参数: learn_param

我尝试了几种方法来显示在Keras的最后一个时代有效使用的模型的学习率

一些研究表明,可以使用回调更改学习率,或者使用自定义指标显示学习率。 但无论我用什么方法,显示的学习率始终是原始的学习率

一些答案意味着重新计算利率应基于公式的多少。但是我想要的只是得到用于反向传播的学习速率,而不是根据算法计算它

以下是我使用的一些代码:

callback\u list=[]
度量_列表=[“精度”]
#添加检查点以保存权重,以防测试集acc得到改进
#...
如果显示\学习\参数:
learn_param=回调_show_learn_param()
callback_list.append(学习参数)
#如果需要,添加度量
def get_lr_度量(优化器):
def lr(y_真,y_pred):
返回optimizer.lr#K.eval(optimizer.lr)
返回lr
lr\u度量=获取lr\u度量(优化器)
公制列表。追加(lr\U公制)
以下是回调的定义:

类回调\u显示\u学习\u参数(回调):
def on_epoch_end(self、epoch、logs=None):
lr=self.model.optimizer.lr
decay=self.model.optimizer.decay
迭代次数=self.model.optimizer.iterations
lr_与_衰变=lr/(1.+衰变*K.cast(迭代,K.dtype(衰变)))
#贝塔值
beta_1=self.model.optimizer.beta_1
beta_2=self.model.optimizer.beta_2
打印(“lr”,K.eval(lr),“衰变”,K.eval(衰变),“lr_带衰变”,K.eval(lr_带衰变),
“beta_1”、K.eval(beta_1)、“beta_2”、K.eval(beta_2))
基本上,显示的值是恒定的,不会改变。这对于β值和衰减是有意义的。显示的学习速率似乎是初始速率。对于学习率,我找不到一种方法来显示这个简单的值:实际使用的有效学习率

顺便说一句,有一种更容易显示初始学习率的方法:

def on_epoch_end(self, epoch, logs=None):
  lr = float(K.get_value(self.model.optimizer.lr))
  print("Learning rate:", lr)
将keras.backend导入为K
打印(K.eval(model.optimizer.lr))

您需要使用
K.get\u value
获得学习率。看看回调函数是如何从模型中获得学习率的。在您的情况下,您应该能够打印学习率:

def on_epoch_end(self, epoch, logs=None):
  lr = float(K.get_value(self.model.optimizer.lr))
  print("Learning rate:", lr)