获得keras模型的学习率

use*_*492 12 python machine-learning neural-network keras

我似乎无法获得学习率的价值.我得到的是下面.

我已经尝试了200个时代的模型,并希望看到/改变学习率.这不是正确的方法吗?

>>> print(ig_cnn_model.optimizer.lr)
<tf.Variable 'lr_6:0' shape=() dtype=float32_ref>
Run Code Online (Sandbox Code Playgroud)

Pri*_*usa 24

使用eval()来自keras.backend:

import keras.backend as K
from keras.models import Sequential
from keras.layers import Dense

model = Sequential()
model.add(Dense(1, input_shape=(1,)))
model.add(Dense(1))

model.compile(loss='mse', optimizer='adam')
print(K.eval(model.optimizer.lr))
>>>0.001
Run Code Online (Sandbox Code Playgroud)

  • 如果我想重置学习率怎么办?例如像`model.optimizer.lr=10`? (2认同)
  • 或者最近的张量流版本中的“model.optimizer.lr.numpy()”。`lr` 只是一个变量,因此分配它的工作方式与往常一样:`model.optimizer.lr.assign(0.1)` (2认同)

eXi*_*nCe 16

获取与优化器相关的所有信息的最佳方法是使用.get_config().

例子:

model.compile(optimizer=optimizerF,
                  loss=lossF,
                  metrics=['accuracy'])

model.optimizer.get_config()

>>> {'name': 'Adam', 'learning_rate': 0.001, 'decay': 0.0, 'beta_1': 0.9, 'beta_2': 0.999, 'epsilon': 1e-07, 'amsgrad': False}
Run Code Online (Sandbox Code Playgroud)

它返回一个包含所有信息的字典。


Mim*_*eng 11

您可以通过以下方式更改学习率

from keras.optimizers import Adam

model.compile(optimizer=Adam(lr=0.001), 
              loss='categorical_crossentropy', 
              metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)

  • Op在问如何获得学习率。没有设置。请注意,Keras允许动态更改lr,因此您可能希望在经过几次训练后在以后的某个阶段知道lr (3认同)