I am new to Tensorflow ,I donot know how to get objective set to at least 10% val_recall with maximum val_precision in keras tuner.
can somebody please let me know what needs to be done for f1score as a metric in keras-tuner. Currently it is set to 'val_accuracy'
I want at least 10% val_recall with maximum val_precision.
from keras_tuner import HyperModel
import keras_tuner as kt
from tensorflow import keras
import tensorflow_addons as tfa
def model_builder(hp):
hp_units = hp.Int('units', min_value=32, max_value=512, step=32)
model = keras.Sequential()
model.add(tf.keras.layers.Conv1D(filters=hp_units, kernel_size=3,padding='same',activation='relu'))
model.add(tf.keras.layers.MaxPooling1D())
model.add(tf.keras.layers.Conv1D(filters=hp_units, kernel_size=3,padding='same',activation='relu'))
model.add(tf.keras.layers.MaxPooling1D())
model.add(tf.keras.layers.Conv1D(filters=hp_units, kernel_size=3,padding='same',activation='relu'))
model.add(tf.keras.layers.MaxPooling1D())
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(128, activation='relu'))
model.add(tf.keras.layers.Dense(1, activation='sigmoid',bias_initializer=tf.keras.initializers.Constant(output_bias)))
hp_learning_rate = hp.Choice('learning_rate', values=[1e-3, 1e-4])
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=hp_learning_rate),
loss=tf.keras.losses.BinaryCrossentropy(),
metrics=['accuracy', tf.keras.metrics.Precision(),
tf.keras.metrics.Recall(),
tfa.metrics.F1Score(num_classes=1, average='macro',threshold=0.5)])
return model
tuner = kt.Hyperband(model_builder,
objective='val_accuracy',
factor=3,
directory='my_dir',
project_name='intro_to_kt',
overwrite = True)