ML: guardar un modelo de aprendizaje profundo en Keras

El entrenamiento de un modelo de red neuronal/aprendizaje profundo suele llevar mucho tiempo, especialmente si la capacidad del hardware del sistema no cumple con los requisitos. Una vez realizado el entrenamiento, guardamos el modelo en un archivo. Para reutilizar el modelo en un momento posterior para hacer predicciones, cargamos el modelo guardado.
A través de Keras, los modelos se pueden guardar en tres formatos:

  • formato YAML
  • formato JSON
  • formato HDF5

Los archivos YAML y JSON almacenan solo la estructura del modelo, mientras que el archivo HDF5 almacena el modelo de red neuronal completo junto con la estructura y los pesos. Por lo tanto, si la estructura del modelo se guarda en formato YAML o JSON, los pesos deben almacenarse en un archivo HDF5 para almacenar todo el modelo.
Teniendo en cuenta el conjunto de datos de precios de la vivienda de Boston:
Código: cargando el conjunto de datos y preprocesando los datos

import keras
from keras.datasets import boston_housing
  
(train_data, train_targets), (test_data, test_targets)= boston_housing.load_data()
  
mean = train_data.mean(axis = 0)
train_data-= mean
std = train_data.std(axis = 0)
  
train_data/= std
test_data-= mean
test_data/= std

Código: entrenar un modelo de red neuronal en él

from keras import models
from keras import layers
  
model = models.Sequential()
model.add(layers.Dense(64, activation ="relu", input_shape =(train_data.shape[1], )))
model.add(layers.Dense(64, activation ="relu"))
model.add(layers.Dense(1))
model.compile(optimizer ="rmsprop", loss ="mse", metrics =["mae"])
loss, accuracy = model.evaluate(test_data, test_targets)

Producción:


Model evaluation


Código: guardar y recargar modelo en formato de archivo HDF5

from keras.models import load_model
model.save("network.h5")
loaded_model = load_model("network.h5")
loss, accuracy = loaded_model.evaluate(test_data, test_targets)

Producción:

Loaded model evaluation

Código: guardar y recargar el modelo en formato de archivo JSON

# Saving model structure to a JSON file
  
model_json = model.to_json() # with open("network.json", "w") as json_file:
    json_file.write(model_json)
  
# Saving weights of the model to a HDF5 file
model.save_weights("network.h5")
  
# Loading JSON file 
json_file = open("network.json", 'r')
loaded_model_json = json_file.read()
json_file.close()
loaded_model = model_from_json(loaded_model_json)
  
# Loading weights
loaded_model.load_weights("network.h5")
loss, accuracy = loaded_model.evaluate(test_data, test_targets)

Código: guardar y volver a cargar el modelo en formato de archivo YAML

# Saving model structure to a YAML file
model_yaml = model.to_yaml() 
with open("network.yaml", "w") as yaml_file:
    yaml_file.write(model_yaml)
  
# Saving weights of the model to a HDF5 file
model.save_weights("network.h5")
  
# Loading YAML file 
yaml_file = open("network.yaml", 'r')
loaded_model_yaml = yaml_file.read()
yaml_file.close()
loaded_model = model_from_yaml(loaded_model_yaml)
  
# Loading weights
loaded_model.load_weights("network.h5")
loss, accuracy = loaded_model.evaluate(test_data, test_targets)

Publicación traducida automáticamente

Artículo escrito por manmayi y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *