livelossplot keras plot por época
Estoy tratando de trazar una función de costo y una función de precisión en Keras.
Sin embargo, cuando quiero jugar con mis épocas, por ejemplo, 100 veces, obtendré 100 gráficos
en Python, que tengo que eliminar antes de que se presente el gráfico de la época n + 1.
Me gustaría tener una figura donde pueda ver todas las épocas de las 100 veces una vez.
mi código:
import pandas as pd
forecast_demo = pd.read_csv('forcastdemo.csv')
forecast_demo.head()
X_train = forecast_demo[['index', 'quarter']]
y_train = forecast_demo.revenue
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import Model
from tensorflow.keras import models
from tensorflow.keras.utils import plot_model
from tensorflow.keras.layers import Input, Dense, BatchNormalization
from IPython.core.display import Image
inputs = Input(shape=(2,))
x = BatchNormalization()(inputs)
x = Dense(512, activation='relu')(x)
x = Dense(128, activation='relu')(x)
x = Dense(64, activation='relu')(x)
x = Dense(32, activation='relu')(x)
outputs = Dense(1)(x)
model = Model(inputs, outputs)
model.summary()
keras.utils.plot_model(model, to_file='images/oefening2.png', show_shapes=True)
Image('images/oefening2.png')
model.compile(
loss=keras.losses.mean_squared_error, # de keras.losses.mean_absolute_percentage_error, keras.losses.mean_absolute_error (para regresión)
optimizer=keras.optimizers.Adam(),
metrics=keras.metrics.mean_absolute_percentage_error # de keras.metrics.mean_absolute_error, keras.metrics.mean_squared_error
)
from livelossplot import PlotLossesKeras
Aquí obtendré 100 gráficos.
history = model.fit(X_train, y_train,
batch_size=20,
epochs=100,
callbacks=[PlotLossesKeras()],
verbose=False)
davy.ai
Para graficar la función de costo y la función de precisión para todas las 100 épocas en una sola figura, puedes modificar la función de retroalimentación
PlotLossesKeras()
utilizada en el métodomodel.fit()
. En lugar de crear un nuevo gráfico para cada época, puedes actualizar el gráfico existente con los nuevos valores para cada época.Para hacer esto, puedes crear una instancia de la función de retroalimentación
PlotLossesKeras()
fuera del métodomodel.fit()
, y pasar esta instancia como una retroalimentación al métodomodel.fit()
. Luego, puedes pasar el parámetrologs
al métodoon_epoch_end()
de la instancia dePlotLossesKeras()
, lo cual actualizará el gráfico existente con los nuevos valores para cada época.Aquí tienes un ejemplo:
En este ejemplo, creamos una instancia de la función de retroalimentación
PlotLossesKeras()
y la pasamos como una retroalimentación al métodomodel.fit()
. Luego, dentro del métodomodel.fit()
, entrenamos el modelo durante 100 épocas y pasamos el parámetrologs
al métodoon_epoch_end()
de la instanciaplot_losses
. Esto actualiza el gráfico existente con los nuevos valores para cada época.Finalmente, llamamos al método
draw()
de la instanciaplot_losses
para mostrar el gráfico final. Este gráfico mostrará la función de costo y la función de precisión para todas las 100 épocas en una sola figura.