I am trying to use Keras Tuner to do hyperparameter tuning on a regression ANN. When I do a hyperparameter search, I receive KeyError: 'val_mean_absolute_error
.
Here is my code:
def build_model(hp):
model = keras.Sequential()
for i in range(hp.Int('num_layers', 2, 20)):
model.add(layers.Dense(
units=hp.Int('units_' + str(i), min_value=32, max_value=512, step=32),
activation='relu'
))
if hp.Boolean("dropout"):
model.add(layers.Dropout(rate=0.5))
model.add(layers.Dense(1, activation='linear'))
model.compile(
optimizer=keras.optimizers.Adam(hp.Choice('learning_rate', [1e-4, 1e-3, 1e-5])),
loss='mean_absolute_error',
metrics=['mean_absolute_error']
)
return model
tuner = kt.RandomSearch(
build_model,
objective='val_mean_absolute_error',
max_trials=5,
executions_per_trial=2,
overwrite=True,
directory="Local Files",
project_name="Keras")
tuner.search(x_train, y_train, epochs=1)
After one model is trained, I get this error:
Traceback (most recent call last):
File "c:\Users\{user}\.venv\lib\site-packages\keras_tuner\engine\base_tuner.py", line 266, in _try_run_and_update_trial
self._run_and_update_trial(trial, *fit_args, **fit_kwargs)
File "c:\Users\{user}\.venv\lib\site-packages\keras_tuner\engine\base_tuner.py", line 257, in _run_and_update_trial
tuner_utils.convert_to_metrics_dict(
File "c:\Users\{user}\.venv\lib\site-packages\keras_tuner\engine\tuner_utils.py", line 270, in convert_to_metrics_dict
[convert_to_metrics_dict(elem, objective) for elem in results]
File "c:\Users\{user}\.venv\lib\site-packages\keras_tuner\engine\tuner_utils.py", line 270, in <listcomp>
[convert_to_metrics_dict(elem, objective) for elem in results]
File "c:\Users\{user}\.venv\lib\site-packages\keras_tuner\engine\tuner_utils.py", line 283, in convert_to_metrics_dict
best_value, _ = _get_best_value_and_best_epoch_from_history(
File "c:\Users\{user}\.venv\lib\site-packages\keras_tuner\engine\tuner_utils.py", line 254, in _get_best_value_and_best_epoch_from_history
objective_value = objective.get_value(metrics)
File "c:\Users\{user}\.venv\lib\site-packages\keras_tuner\engine\objective.py", line 57, in get_value
return logs[self.name]
KeyError: 'val_mean_absolute_error'
I've been unable to find this error anywhere, and I have duplicated code from multiple examples, all which throw this same error. What is happening here?