Se usó la API de Cloud Translation para traducir esta página.
Switch to English

tf.train.Checkpoint

TensorFlow 1 versión Ver código fuente en GitHub

Grupos rastreable objetos, guardar y restaurar ellos.

Se utiliza en los cuadernos

Se utiliza en la guía Se utiliza en los tutoriales

Checkpoint 's constructor acepta argumentos clave cuyos valores son tipos que contienen Estado rastreable, como tf.keras.optimizers.Optimizer implementaciones, tf.Variable s, tf.data.Dataset iteradores, tf.keras.Layer implementaciones, o tf.keras.Model implementaciones. Se ahorra estos valores con un puesto de control, y mantiene una save_counter para numerar los puestos de control.

Ejemplo de uso:

 import tensorflow as tf
import os

checkpoint_directory = "/tmp/training_checkpoints"
checkpoint_prefix = os.path.join(checkpoint_directory, "ckpt")

# Create a Checkpoint that will manage two objects with trackable state,
# one we name "optimizer" and the other we name "model".
checkpoint = tf.train.Checkpoint(optimizer=optimizer, model=model)
status = checkpoint.restore(tf.train.latest_checkpoint(checkpoint_directory))
for _ in range(num_training_steps):
  optimizer.minimize( ... )  # Variables will be restored on creation.
status.assert_consumed()  # Optional sanity checks.
checkpoint.save(file_prefix=checkpoint_prefix)
 

Checkpoint.save() y Checkpoint.restore() de escritura y los puestos de control basados en objetos de lectura, en contraste con la de TensorFlow 1.x tf.compat.v1.train.Saver el que escribe y lee variable.name puestos de control en base. Puntos de control basada en objetos ahorra un gráfico de dependencias entre objetos de Python ( Layer s, Optimizer s, Variable s, etc.) con bordes con nombre, y este gráfico se utiliza para que coincida con las variables cuando la restauración de un puesto de control. Puede ser más robusto a cambios en el programa de Python, y ayuda a restaurar la ayuda-al-crear para las variables.

Checkpoint objetos tienen dependencias en los objetos pasados como argumentos de palabras clave para sus constructores, y cada dependencia se le da un nombre que es idéntico al nombre del argumento de palabra clave para la que fue creada. Clases TensorFlow como Layer s y Optimizer s agregarán automáticamente las dependencias en sus propias variables (por ejemplo, "núcleo" y "sesgo" para tf.keras.layers.Dense ). Heredando de tf.keras.Model hace que la gestión de dependencias fácil en las clases definidas por el usuario, ya que Model engancha en la asignación de atributos. Por ejemplo:

 class Regress(tf.keras.Model):

  def __init__(self):
    super(Regress, self).__init__()
    self.input_transform = tf.keras.layers.Dense(10)
    # ...

  def call(self, inputs):
    x = self.input_transform(inputs)
    # ...
 

Este Model tiene una dependencia denominada "input_transform" en su Dense capa, que a su vez depende de sus variables. Como resultado, el ahorro de una instancia de Regress usando tf.train.Checkpoint también ahorrará todas las variables creadas por la Dense capa.

Cuando las variables se asignan a varios trabajadores, cada trabajador escribe su propia sección del puesto de control. Estas secciones se fusionaron / re-indexado a comportarse como un único punto de control. Esto evita la copia de todas las variables a un trabajador, pero sí requiere que todos los trabajadores ven un sistema de archivos común.

Mientras tf.keras.Model.save_weights y tf.train.Checkpoint.save ahorrar en el mismo formato, nota que la raíz del punto de control resultante es el objeto del método para guardar está conectada. Este medio de un ahorro tf.keras.Model usando save_weights y carga en un tf.train.Checkpoint con un Model unidos (o viceversa) no coincidirán con el Model las variables 's. Consulte la guía a la formación de puntos de control para más detalles. Prefiero tf.train.Checkpoint sobre tf.keras.Model.save_weights para los puestos de control de formación.

**kwargs argumentos de palabras clave se configuran como atributos de este objeto, y se guardan con el puesto de control. Los valores deben ser objetos rastreables.

ValueError Si los objetos en kwargs no son objeto de control.

save_counter Se incrementa cuando save() se llama. Se utiliza para los puestos de control numérico.

Métodos

read

Ver fuente

Leer un puesto de control de la formación escrito con write .

Lee este Checkpoint y todos los objetos de los que depende.

Este método es igual restore() , pero no espera que el save_counter variable en el puesto de control. Es sólo restaura los objetos que el puesto de control ya depende.

El método está destinado principalmente para su uso por empresas de servicios públicos más altos de gestión de punto de control de nivel que el uso write() en lugar de save() y tienen sus propios mecanismos a los puestos de control y número de pista.

Ejemplo de uso:

 # Create a checkpoint with write()
ckpt = tf.train.Checkpoint(v=tf.Variable(1.))
path = ckpt.write('/tmp/my_checkpoint')

# Later, load the checkpoint with read()
# With restore() assert_consumed() would have failed.
checkpoint.read(path).assert_consumed()

# You can also pass options to restore(). For example this
# runs the IO ops on the localhost:
options = tf.CheckpointOptions(experimental_io_device="/job:localhost")
checkpoint.read(path, options=options)
 

args
save_path La ruta de acceso al puesto de control tal como lo devuelve write .
options Opcionales tf.train.CheckpointOptions objeto.

Devoluciones
Un objeto de estado de carga, que puede ser utilizado para hacer afirmaciones sobre el estado de una restauración de punto de control. Ver restore para más detalles.

restore

Ver fuente

Restauración de un puesto de control de la formación.

Restaura este Checkpoint y todos los objetos de los que depende.

Este método está destinado a ser utilizado para los puntos de control de carga creado por save() . Para los puestos de control creados por write() utilizar la read() método que no espera que el save_counter variable de agregado por save() .

restore() o bien los valores cesionarios de inmediato si las variables para restaurar han sido ya creado, o la restauración aplaza hasta que se creen las variables. Dependencias añadidas después de esta llamada será igualado si tienen un objeto correspondiente en el punto de control (la solicitud de restauración pondrá en cola de espera en cualquier objeto rastreable para el que se añade la dependencia esperada).

Para asegurar que la carga está completa y no hay más tareas se llevarán a cabo, utilizar el assert_consumed() método del objeto devuelto por el estado restore() :

 checkpoint = tf.train.Checkpoint( ... )
checkpoint.restore(path).assert_consumed()

# You can additionally pass options to restore():
options = tf.CheckpointOptions(experimental_io_device="/job:localhost")
checkpoint.restore(path, options=options).assert_consumed()
 

Una excepción será levantado si cualquier Python objetos en el gráfico de la dependencia no se encontraron en el punto de control, o si cualquiera de los valores checkpoints no tienen un objeto Python coincidente.

Basados en nombres tf.compat.v1.train.Saver puestos de control de TensorFlow 1.x se pueden cargar utilizando este método. Los nombres se utilizan para que coincida con las variables. Puestos de control basados en nombre de volver a codificar utilizando tf.train.Checkpoint.save tan pronto como sea posible.

args
save_path La ruta de acceso al puesto de control, tal como lo devuelve save o tf.train.latest_checkpoint . Si el puesto de control fue escrito por el basado en nombre tf.compat.v1.train.Saver , los nombres se utilizan para que coincida con las variables.
options Opcionales tf.train.CheckpointOptions objeto.

Devoluciones
Un objeto de estado de carga, que puede ser utilizado para hacer afirmaciones sobre el estado de una restauración de punto de control.

El objeto de estado devuelto tiene los siguientes métodos:

  • assert_consumed() : genera una excepción si las variables son incomparables: valores, ya sea el punto de control que no tienen un objeto Python a juego o los objetos de Python en el gráfico de la dependencia sin valores