#python #machine-learning #keras #regression #hyperas
#python #машинное обучение #keras #регрессия #hyperas
Вопрос:
Я построил модель с использованием Keras для решения задачи регрессии. Я хочу выполнить оптимизацию гиперпараметров для этой модели. В качестве показателей я использовал val_mean_absolute_error
. В примере рассматривается только проблема классификации (доступна на https://github.com/maxpumperla/hyperas)
validation_acc = np.amax(result.history['val_acc'])
print('Best validation acc of epoch:', validation_acc)
return {'loss': -validation_acc, 'status': STATUS_OK, 'model': model}
Как адаптировать этот код для задачи регрессии (для использования val_mean_absolute_error
в качестве метрики)?
Ответ №1:
Для задач регрессии мы обычно не определяем отдельную метрику, используя саму потерю для оценки производительности модели (чем ниже, тем лучше); итак, предполагая, что вы используете mae
в качестве потери, и вы скомпилировали свою модель как
model.compile(loss='mae', optimizer={{choice(['rmsprop', 'adam', 'sgd'])}})
вот как вы должны изменить код из связанного примера:
#get the lowest validation loss of the training epochs
validation_loss = np.amin(result.history['val_loss'])
print('Best validation loss of epoch:', validation_loss)
return {'loss': validation_loss, 'status': STATUS_OK, 'model': model}
Это правда, что некоторые люди добавляют аргумент компиляции для metrics=['mae']
в подобных случаях, но в этом нет необходимости.