tf.train.Scaffold

View source on GitHub

Structure to create or gather pieces commonly needed to train a model.

When you build a model for training you usually need ops to initialize variables, a Saver to checkpoint them, an op to collect summaries for the visualizer, and so on.

Various libraries built on top of the core TensorFlow library take care of creating some or all of these pieces and storing them in well known collections in the graph. The Scaffold class helps pick these pieces from the graph collections, creating and adding them to the collections if needed.

If you call the scaffold constructor without any arguments, it will pick pieces from the collections, creating default ones if needed when scaffold.finalize() is called. You can pass arguments to the constructor to provide your own pieces. Pieces that you pass to the constructor are not added to the graph collections.

The following pieces are directly accessible as attributes of the Scaffold object:

  • saver: A tf.compat.v1.train.Saver object taking care of saving the variables. Picked from and stored into the SAVERS collection in the graph by default.
  • init_op: An op to run to initialize the variables. Picked from and stored into the INIT_OP collection in the graph by default.
  • ready_op: An op to verify that the variables are initialized. Picked from and stored into the READY_OP collection in the graph by default.
  • ready_for_local_init_op: An op to verify that global state has been initialized and it is alright to run local_init_op. Picked from and stored into the READY_FOR_LOCAL_INIT_OP collection in the graph by default. This is needed when the initialization of local variables depends on the values of global variables.
  • local_init_op: An op to initialize the local variables. Picked from and stored into the LOCAL_INIT_OP collection in the graph by default.
  • summary_op: An op to run and merge the summaries in the graph. Picked from and stored into the SUMMARY_OP collection in the graph by default.

You can also pass the following additional pieces to the constructor:

  • init_feed_dict: A session feed dictionary that should be used when running the init op.
  • init_fn: A callable to run after the init op to perform additional initializations. The callable will be called as init_fn(scaffold, session).

init_op Optional op for initializing variables.
init_feed_dict Optional session feed dictionary to use when running the init_op.
init_fn Optional function to use to initialize the model after running the init_op. Will be called as init_fn(scaffold, session).
ready_op Optional op to verify that the variables are initialized. Must return an empty 1D string tensor when the variables are initialized, or a non-empty 1D string tensor listing the names of the non-initialized variables.
ready_for_local_init_op Optional op to verify that the global variables are initialized and local_init_op can be run. Must return an empty 1D string tensor when the global variables are initialized, or a non-empty 1D string tensor listing the names of the non-initialized global variables.
local_init_op Optional op to initialize local variables.
summary_op Optional op to gather all summaries. Must return a scalar string tensor containing a serialized Summary proto.
saver Optional tf.compat.v1.train.Saver object to use to save and restore variables. May also be a tf.train.Checkpoint object, in which case object-based checkpoints are saved. This will also load some object-based checkpoints saved from elsewhere, but that loading may be fragile since it uses fixed keys rather than performing a full graph-based match. For example if a variable has two paths from the Checkpoint object because two Model objects share the Layer object that owns it, removing one Model may change the keys and break checkpoint loading through this API, whereas a graph-based match would match the variable through the other Model.
copy_from_scaffold Optional scaffold object to copy fields from. Its fields will be overwritten by the provided fields in this function.

init_feed_dict

init_fn

init_op

local_init_op

ready_for_local_init_op

ready_op

saver

summary_op

Methods

default_local_init_op

View source

Returns an op that groups the default local init ops.

This op is used during session initialization when a Scaffold is initialized without specifying the local_init_op arg. It includes tf.compat.v1.local_variables_initializer, tf.compat.v1.tables_initializer, and also initializes local session resources.

Returns
The default Scaffold local init op.

finalize

View source

Creates operations if needed and finalizes the graph.

get_or_default

View source

Get from cache or create a default operation.