class regressionHyperModel(HyperModel):
def __init__(self, input_shape):
self.input_shape = input_shape
def build(self, hp):
initializer = hp.Choice(name='kernel', values=['variance_scaling', 'constant',
'glorot_uniform', 'glorot_normal', 'ones',
'zeros', 'he_normal', 'he_uniform', 'random_normal', 'random_uniform'])
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(
input_dim=(self.input_shape),
units=hp.Int(name='units_1', min_value=16, max_value=1000, step=16),
activation =hp.Choice(name='activation_1', values=['relu','tanh','elu','selu','swish']),
kernel_initializer=initializer
))
model.add(tf.keras.layers.Dropout(rate=hp.Float(name='dropout_1', min_value=0, max_value=0.9, step=0.1)))
model.add(tf.keras.layers.Dense(
units=hp.Int(name='units_2', min_value=16, max_value=1000, step=16),
activation = hp.Choice(name='activation_2', values=['relu','tanh','elu','selu','swish']),
kernel_initializer=initializer
))
model.add(tf.keras.layers.Dropout(rate=hp.Float(name='dropout_2', min_value=0, max_value=0.9, step=0.1)))
model.add(tf.keras.layers.Dense(
units=hp.Int(name='units_3', min_value=16, max_value=1000, step=16),
activation = hp.Choice(name='activation_3', values=['relu','tanh','elu','selu','swish']),
kernel_initializer=initializer
))
model.add(tf.keras.layers.Dropout(rate=hp.Float(name='dropout_3', min_value=0, max_value=0.9, step=0.1)))
model.add(tf.keras.layers.Dense(1552, activation='linear'))
model.compile(optimizer=tf.keras.optimizers.SGD(learning_rate=hp.Choice(name='learning_rate', values=[1e-2, 1e-3, 1e-4, 1e-5, 1e-6])),
loss='mse', metrics=['mse'])
return model
class MyTuner(kt.tuners.Hyperband):
def run_trial(self, trial, *args, **kwargs):
kwargs['batch_size'] = trial.hyperparameters.Int('batch_size', 32, 256, step=32)
kwargs['epochs'] = trial.hyperparameters.Int('epochs', 10, 20000)
super(MyTuner, self).run_trial(trial, *args, **kwargs)
tuner_model = regressionHyperModel(self.state_size)
tuner = MyTuner(hypermodel=tuner_model, objective= 'val_mse' , max_epochs = 100, factor=3,
directory='/content/drive/MyDrive/DataScience/RL tuner/test_dir', project_name='node5', overwrite=False, executions_per_trial=3)
es = tf.keras.callbacks.EarlyStopping(patience=10)
ct = ClearTrainingOutput()
train_size = round(len(states)* 0.8)
train_states = states[:train_size]
test_states = states[train_size:]
train_target = target[:train_size]
test_target = target[train_size:]
tuner.search(train_states, train_target, validation_data=(test_states, test_target), verbose=1, callbacks=[es, ct])
print(tuner.oracle.get_best_trials(num_trials=1)[0].hyperparameters.values)
print(tuner.results_summary(1))
Hi, I'm trying to tune my neural network using keras-tuner on google colab.
My objective is 'val_mse'.
It seems my code works somehow, but while tuner is searching for parameters, it doesn't update
best objective.
For example, tuner found 99 of 'val_mse' and later it found 0.12 of 'val_mse', but it keeps 99 as the best 'val_mse' until searching end.
Is there anyone know why keras-tuner doesn't update objective?