¿Cómo muestro las métricas después de ajustar un modelo de Keras?
Estoy aprendiendo sobre redes neuronales con los tutoriales de Kaggle. He creado una red neuronal para predecir la resistencia del concreto y quiero mostrar la métrica de error cuadrático medio (MSE, por sus siglas en inglés) después de ajustar el modelo. He fallado tanto con print(metrics) como al trazar las métricas (muestra un gráfico vacío).
df = concrete.copy()
df_train = df.sample(frac=0.7, random_state=0)
df_valid = df.drop(df_train.index)
X_train = df_train.drop('CompressiveStrength', axis=1)
X_valid = df_valid.drop('CompressiveStrength', axis=1)
y_train = df_train['CompressiveStrength']
y_valid = df_valid['CompressiveStrength']
model = keras.Sequential([
layers.BatchNormalization(),
layers.Dense(512, activation='relu', input_shape=input_shape),
layers.BatchNormalization(),
layers.Dense(512, activation='relu'),
layers.Dropout(rate=0.3), # aplicar un dropout del 30% a la próxima capa
layers.Dense(512, activation='relu'),
layers.BatchNormalization(),
layers.Dense(512, activation='relu'),
layers.BatchNormalization(),
layers.Dense(1),
])
model.compile(
optimizer='sgd', # SGD es más sensible a diferencias de escala
loss='mse',
metrics=[tf.keras.metrics.MeanSquaredError()]
)
history = model.fit(
X_train, y_train,
validation_data=(X_valid, y_valid),
batch_size=64,
epochs=100,
verbose=0,
callbacks=[early_stopping],
)
print(history)
pyplot.plot(history.history['mean_squared_error'])
davy.ai
Para mostrar la métrica de MSE después de ajustar el modelo, puedes utilizar la función
model.evaluate()
, la cual retornará la pérdida y los valores de las métricas para el modelo en el conjunto de validación. Aquí tienes un ejemplo:Alternativamente, puedes acceder al error cuadrático medio desde el diccionario
history.history
, el cual almacena los valores de la pérdida y las métricas para cada época durante el entrenamiento. Aquí tienes un ejemplo de cómo graficar el MSE desde el objetohistory
:Ten en cuenta que
mean_squared_error
es el nombre de la métrica que especificaste en la funciónmodel.compile()
, así que asegúrate de utilizar el mismo nombre al acceder a ella desde el diccionariohistory.history
.