I was trying out TALOS in Kaggle, and I encountered this error. I ran the same code locally on my Mac and it worked any clue why this would happen?
# then we load the dataset
x, y = talos.templates.datasets.breast_cancer()
# and normalize every feature to mean 0, std 1
x = talos.utils.rescale_meanzero(x)
def breast_cancer_model(x_train, y_train, x_val, y_val, params):
model = keras.models.Sequential()
model.add(keras.layers.Dense(params['first_neuron'], input_dim=x_train.shape[1],
activation=params['activation'],
kernel_initializer=params['kernel_initializer']))
model.add(keras.layers.Dropout(params['dropout']))
model.add(keras.layers.Dense(1, activation=params['last_activation'],
kernel_initializer=params['kernel_initializer']))
model.compile(loss=params['losses'],
optimizer=params['optimizer'],
metrics=['acc', talos.utils.metrics.f1score])
history = model.fit(x_train, y_train,
validation_data=[x_val, y_val],
batch_size=params['batch_size'],
callbacks=[talos.utils.live()],
epochs=params['epochs'],
verbose=0)
return history, model
# then we can go ahead and set the parameter space
p = {'first_neuron':[9,10,11],
'hidden_layers':[0, 1, 2],
'batch_size': [30],
'epochs': [20],
'dropout': [0],
'kernel_initializer': ['uniform','normal'],
'optimizer': ['Nadam', 'Adam'],
'losses': ['binary_crossentropy'],
'activation':['relu', 'elu'],
'last_activation': ['sigmoid']}
# and run the experiment
t = talos.Scan(x=x,
y=y,
model=breast_cancer_model,
params=p,
experiment_name='breast_cancer',
round_limit=10,
disable_progress_bar=True)
Log
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-6-195f1febb305> in <module>
6 experiment_name='breast_cancer',
7 round_limit=10,
----> 8 disable_progress_bar=True)
/opt/conda/lib/python3.7/site-packages/talos/scan/Scan.py in __init__(self, x, y, params, model, experiment_name, x_val, y_val, val_split, random_method, seed, performance_target, fraction_limit, round_limit, time_limit, boolean_limit, reduction_method, reduction_interval, reduction_window, reduction_threshold, reduction_metric, minimize_loss, disable_progress_bar, print_params, clear_session, save_weights)
194 # start runtime
195 from .scan_run import scan_run
--> 196 scan_run(self)
/opt/conda/lib/python3.7/site-packages/talos/scan/scan_run.py in scan_run(self)
24 # otherwise proceed with next permutation
25 from .scan_round import scan_round
---> 26 self = scan_round(self)
27 self.pbar.update(1)
28
/opt/conda/lib/python3.7/site-packages/talos/scan/scan_round.py in scan_round(self)
17 # fit the model
18 from ..model.ingest_model import ingest_model
---> 19 self.model_history, self.round_model = ingest_model(self)
20 self.round_history.append(self.model_history.history)
21
/opt/conda/lib/python3.7/site-packages/talos/model/ingest_model.py in ingest_model(self)
8 self.x_val,
9 self.y_val,
---> 10 self.round_params)
<ipython-input-4-54fcf7fc51e8> in breast_cancer_model(x_train, y_train, x_val, y_val, params)
20 callbacks=[talos.utils.live()],
21 epochs=params['epochs'],
---> 22 verbose=0)
23
24 return history, model
/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py in _method_wrapper(self, *args, **kwargs)
106 def _method_wrapper(self, *args, **kwargs):
107 if not self._in_multi_worker_mode(): # pylint: disable=protected-access
--> 108 return method(self, *args, **kwargs)
109
110 # Running inside `run_distribute_coordinator` already.
/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_batch_size, validation_freq, max_queue_size, workers, use_multiprocessing)
1077 train_function = self.make_train_function()
1078 self._train_counter.assign(0)
-> 1079 callbacks.on_train_begin()
1080 training_logs = None
1081 # Handle fault-tolerance for multi-worker.
/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/callbacks.py in on_train_begin(self, logs)
499 if numpy_logs is None: # Only convert once.
500 numpy_logs = tf_utils.to_numpy_or_python_type(logs)
--> 501 callback.on_train_begin(numpy_logs)
502
503 def on_train_end(self, logs=None):
/opt/conda/lib/python3.7/site-packages/kerasplotlib/traininglog.py in on_train_begin(self, logs)
31
32 def on_train_begin(self, logs={}):
---> 33 self.base_metrics = [metric for metric in self.params['metrics'] if not metric.startswith('val_')]
34 if self.figsize is None:
35 self.figsize = (
KeyError: 'metrics'
I was trying out TALOS in Kaggle, and I encountered this error. I ran the same code locally on my Mac and it worked any clue why this would happen?
Log