I am not understanding what will be my fitness function for regression problem.basically i have 1000 datasets with input shape (72,2) and 1000 output dataset (72,4).I want my model to be trained with these data
In my case, X_train is a numpy.ndarray with shape (1000,72,2) and Y_train is also a a numpy.ndarray with shape (1000,72,4). What should be the fitness function ?
a)
def fitness_func(ga_instance, solution, sol_idx):
global keras_ga, model, all_data
fitness_values = []
for X_train, Y_train in all_data:
model_weights_matrix = pygad.kerasga.model_weights_as_matrix(model=model, weights_vector=solution)
model.set_weights(weights=model_weights_matrix)
predictions = model.predict(X_train)
mae = tf.keras.losses.MeanAbsoluteError()
abs_error = mae(Y_train, predictions).numpy() + 0.00000001
solution_fitness = 1.0 / abs_error
fitness_values.append(solution_fitness)
return fitness_values
or b)
def fitness_func(ga_instance, solution, sol_idx):
global keras_ga, model, all_data
fitness_values = []
for X_train, Y_train in all_data:
model_weights_matrix = pygad.kerasga.model_weights_as_matrix(model=model, weights_vector=solution)
model.set_weights(weights=model_weights_matrix)
predictions = model.predict(X_train)
mae = tf.keras.losses.MeanAbsoluteError()
abs_error = mae(Y_train, predictions).numpy() + 0.00000001
solution_fitness = 1.0 / abs_error
fitness_values.append(solution_fitness)
average_fitness = np.mean(fitness_values)
return average_fitnessmy model is:
sequence_length = X_train.shape[1]
feature_dimensions = X_train.shape[2]
input_layer = Input(shape=(2,), name='input_layer')
hidden_layer = Dense(units=8, activation='relu')(input_layer)
output_layer = Dense(units=4, activation='linear', name='output_layer')(hidden_layer)
model = Model(inputs=input_layer, outputs=output_layer)
model.compile(optimizer='adam', loss='mse')
weights_vector = pygad.kerasga.model_weights_as_vector(model=model)
keras_ga = pygad.kerasga.KerasGA(model=model,
num_solutions=15)
num_generations = 10000#0#0
num_parents_mating = 5
initial_population = keras_ga.population_weights
ga_instance = pygad.GA(num_generations=num_generations,
num_parents_mating=num_parents_mating,
initial_population=initial_population,
on_generation=callback_generation,
crossover_type="two_points",
fitness_func=fitness_func)
ga_instance.run(). Any suggestions will be appreciated`
Sadia Ferdous Snigdha is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.