Моя цель - посмотреть на прогрессирование скорости обучения оптимизатора 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
Пожалуйста, проверьте мою записную книжку и прокомментируйте любые изменения, которые я стоит сделать. Также напишите в комментариях любую дополнительную информацию, которую я могу забыть упомянуть.
[UDPATE] - Думаю, моя проблема связана с типом значения optimizer.lr. В моем случае это объект InverseTimeDecay. Как я могу изменить тип этого объекта на число с плавающей запятой? InverseTimeDecay для плавания.