我的目标是查看 Adam 优化器的学习率进程,我在该进程上应用了 InverseTimeDecay 计划。所以我想检查学习率是否真的降低了。
在检查了堆栈溢出的这个问题后,我在我的代码中做了类似的更改:
- 在我的回调函数中添加了这个,
tf.keras.callbacks.LearningRateScheduler(hparams[HP_LEARNING_RATE])
- 根据发布的类似问题添加了此函数调用:
def get_lr_metric(optimizer):
def lr(y_true, y_pred):
return optimizer.lr
return lr
- 在 model.compile 方法中还添加了以下调用,
lr_metric = [get_lr_metric(optimizer)]
model.compile(optimizer=optimizer,
loss=neural_network_parameters['model_loss'],
metrics=neural_network_parameters['model_metric'] + lr_metric, ) #+ lr_metric
但是,当我开始训练模型时,出现以下错误:
TypeError: float() argument must be a string or a number, not 'InverseTimeDecay'
TypeError: 'float' object is not callable
请检查我的colab 笔记本,并请评论我应该做的任何更改。另外,请在评论中写下我可能忘记提及的任何其他信息。
[UDPATE] - 我想我的问题是 optimizer.lr 值的类型。在我的例子中是一个 InverseTimeDecay 对象。如何将该对象的类型更改为浮点数?InverseTimeDecay 浮动。