es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo guardar un modelo no serializable en Tensorflow.

He creado un modelo con capas personalizadas, que tienen operaciones matriciales y cosas así. Ahora quiero guardar mi modelo después del entrenamiento. He intentado:

model.save("model.h5", save_format='tf')

Pero sale un error:

NotImplementedError: Saving the model to HDF5 format requires the model to be 
a Functional model or a Sequential model. It does not work for subclassed models, 
because such models are defined via the body of a Python method, which isn't safely serializable.
Consider saving to the Tensorflow SavedModel format (by setting save_format="tf") or using `save_weights`.

He encontrado algo que funciona:

checkpoint_path = "checkpoints"

ckpt = tf.train.Checkpoint(model=model,
                           optimizer=optimizer)

ckpt_manager = tf.train.CheckpointManager(ckpt, checkpoint_path, max_to_keep=5)

if ckpt_manager.latest_checkpoint:
  ckpt.restore(ckpt_manager.latest_checkpoint)

Mi pregunta es: ¿usando esta manera, puedo hacer lo mismo que guardar un modelo serializable (como un modelo secuencial), o estos checkpoints se utilizan para otros fines?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Al utilizar el enfoque de checkpoint, puedes guardar el estado de los parámetros del modelo, incluyendo capas personalizadas con operaciones de matriz, después del entrenamiento. Esto es útil cuando deseas continuar entrenando tu modelo más tarde o reutilizar el modelo para inferencia. Sin embargo, este enfoque no es lo mismo que guardar un modelo serializable como un Sequential Model, ya que solo guarda los parámetros y no la arquitectura del modelo completo. Así que, si deseas utilizar los parámetros guardados para la inferencia, necesitas reconstruir el modelo y cargar los parámetros guardados utilizando el método load_weights.

Comments are closed.