类的详细信息在github可找到
功能:保存和恢复变量
有关变量,保存和恢复的概述,请参见变量
将Saver类添加ops 从而在checkpointes里save和restore变量 。它还提供了运行这些操作的便捷方法。
Checkpoints是专有格式的二进制文件,它将变量名称映射到张量值。测试Checkpoints内容的最佳方式是使用Saver来加载它
Savers可以使用提供的计数器自动为Checkpoint文件名编号,这使您可以在训练模型时在不同的步骤中保留多个Checkpoints。例如,您可以使用训练步骤编号对Checkpoint文件名进行编号。为避免填满磁盘,储存器会自动管理Checkpoint文件。例如,他们只能保留N个最新文件,或每N小时训练一个Checkpoint。
可以通过将值传递给可选global_step参数来对检查点文件名进行编号 save:
saver.save(sess, 'my-model', global_step=0) ==> filename: 'my-model-0'
...
saver.save(sess, 'my-model', global_step=1000) ==> filename: 'my-model-1000'
此外,Saver()构造函数的可选参数允许您控制磁盘上Checkpoint文件的扩散:
请注意,您仍然需要调用save()方法来保存模型。将这些参数传递给构造函数不会自动为您保存变量。
定期保存的训练代码如下:
.
...
# Create a saver.
saver = tf.train.Saver(...variables...)
# Launch the graph and train, saving the model every 1,000 steps.
sess = tf.Session()
for step in xrange(1000000):
sess.run(..training_op..)
if step % 1000 == 0:
# Append the step number to the checkpoint name:
saver.save(sess, 'my-model', global_step=step)
除了检查点文件之外,保存程序还在磁盘上保留协议缓冲区以及最近的Checkpoint列表。这用于管理编号的检查点文件,通过latest_checkpoint()它可以轻松发现最近检查点的路径。该协议缓冲区存储在Checkpoint文件同一目录下且名为“checkpoint”的文件中。
如果创建多个savers,则可以在调用中为协议缓冲区文件指定不同的文件名。 save():
__init__(
var_list=None,
reshape=False,
sharded=False,
max_to_keep=5,
keep_checkpoint_every_n_hours=10000.0,
name=None,
restore_sequentially=False,
saver_def=None,
builder=None,
defer_build=False,
allow_empty=False,
write_version=tf.train.SaverDef.V2,
pad_step_number=False,
save_relative_paths=False,
filename=None
)
创建一个Saver。
构造函数添加操作以保存和恢复变量。
var_list指定将保存和恢复的变量。它可以作为一个dict或一个列表传递:
例如:
v1 = tf.Variable(..., name='v1')
v2 = tf.Variable(..., name='v2')
# Pass the variables as a dict:
saver = tf.train.Saver({'v1': v1, 'v2': v2})
# Or pass them as a list.
saver = tf.train.Saver([v1, v2])
# Passing a list is equivalent to passing a dict with the variable op names
# as keys:
saver = tf.train.Saver({v.op.name: v for v in [v1, v2]})
可选reshape参数if True,允许从保存文件中恢复变量,其中变量具有不同的shape,但元素和类型的数量相同。如果您已重新变换变量并希望从较旧的检查点重新加载它,则此选项非常有用.
可选sharded参数if True指示保护程序为每个设备分片检查点。
__init__参数说明:
Raises:
Eager Compatibility
启用eager执行时,var_list必须指定 要保存的变量list或dict变量。否则,将出现RuntimeError。
last_checkpoints
尚未删除的检查点文件名列表。
您可以将任何返回的值传递给restore()
返回值:检查点文件名列表,从最旧到最新排序。
as_saver_def()
生成saver的表示。
返回:SaverDef的原因
build()
export_meta_graph(
filename=None,
collection_list=None,
as_text=False,
export_scope=None,
clear_devices=False,
clear_extraneous_savers=False,
strip_default_attrs=False
)
写入MetaGraphDefsave_path / filename。
参数说明:
@staticmethod
from_proto(
saver_def,
import_scope=None
)
返回Saver从中创建的对象saver_def
参数说明:
返回值:
从saver_def构造的Saver。
recover_last_checkpoints(checkpoint_paths)
崩溃后恢复内部保护状态。
此方法对于恢复“self._last_checkpoints”状态很有用。
全局的Checkpoints-checkpoint_paths,如果文件存在,请使用其mtime作为Checkpoint时间戳。
参数说明:
restore(
sess,
save_path
)
恢复以前保存的变量。
此方法运行构造函数添加的ops以恢复变量。它需要启动图表的会话。要恢复的变量不必初始化,因为恢复本身就是一种初始化变量的方法。
该save_path参数通常是先前从save()调用或调用返回的值 latest_checkpoint()。
参数说明:
可能出现的异常:
save(
sess,
save_path,
global_step=None,
latest_filename=None,
meta_graph_suffix='meta',
write_meta_graph=True,
write_state=True,
strip_default_attrs=False
)
保存变量。
此方法运行构造函数添加的ops以保存变量。它需要启动图表的会话。要保存的变量也必须已初始化。
该方法返回新创建的检查点文件的路径前缀。该字符串可以直接传递给调用restore()。
参数说明:
返回值:
字符串:用于检查点文件的路径前缀。如果保护程序是分片的,则该字符串以:' - ????? - of -nnnnn',其中'nnnnn'是创建的分片数。如果保护程序为空,则返回None。
可能出现的异常:
set_last_checkpoints(last_checkpoints)
弃用:使用set_last_checkpoints_with_time
设置旧的Checkpoint文件名列表
参数说明:
可能出现的异常:
set_last_checkpoints_with_time(last_checkpoints_with_time)
设置旧Checkpoint文件名和时间戳的列表。
参数说明:
可能出现的异常:
to_proto(export_scope=None)
参数说明:
返回值:SaverDef协议缓冲器
参考资料
https://www.tensorflow.org/api_docs/python/tf/train/Saver