前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >tf.train.Saver

tf.train.Saver

作者头像
狼啸风云
修改2022-09-04 21:56:53
1.1K0
修改2022-09-04 21:56:53
举报
文章被收录于专栏:计算机视觉理论及其实现

Saver类添加ops来在检查点之间保存和恢复变量,它还提供了运行这些操作的方便方法。检查点是私有格式的二进制文件,它将变量名映射到张量值。检查检查点内容的最佳方法是使用保护程序加载它。保护程序可以自动编号检查点文件名与提供的计数器。这允许您在训练模型时在不同的步骤中保持多个检查点。例如,您可以使用训练步骤编号为检查点文件名编号。为了避免磁盘被填满,保护程序自动管理检查点文件。例如,他们只能保存N个最近的文件,或者每N个小时的培训只能保存一个检查点。通过将一个值传递给可选的global_step参数以保存(),可以对检查点文件名进行编号:

代码语言:javascript
复制
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()构造函数的可选参数允许您控制磁盘上检查点文件的扩散:

  • max_to_keep指示要保存的最近检查点文件的最大数量。随着新文件的创建,旧文件将被删除。如果没有或0,则不会从文件系统中删除检查点,而只保留检查点文件中的最后一个检查点。默认值为5(即保存最近的5个检查点文件)。
  • keep_checkpoint_every_n_hours:除了保存最近的max_to_keep检查点文件之外,您可能还想为每N小时的培训保留一个检查点文件。如果您希望稍后分析一个模型在长时间的培训过程中是如何进行的,那么这将非常有用。例如,传递keep_checkpoint_every_n_hours=2可以确保每2小时的培训中保留一个检查点文件。默认值10,000小时实际上禁用了该特性。

注意,您仍然必须调用save()方法来保存模型。将这些参数传递给构造函数不会自动为您保存变量。一个定期储蓄的训练项目是这样的:

代码语言:javascript
复制
...
# Create a saver.
saver = tf.compat.v1.train.Saver(...variables...)
# Launch the graph and train, saving the model every 1,000 steps.
sess = tf.compat.v1.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)

除了检查点文件之外,保存程序还在磁盘上保存一个协议缓冲区,其中包含最近检查点的列表。这用于管理编号的检查点文件和latest_checkpoint(),从而很容易发现最近检查点的路径。协议缓冲区存储在检查点文件旁边一个名为“检查点”的文件中。如果创建多个保存程序,可以在save()调用中为协议缓冲区文件指定不同的文件名。

__init__

代码语言:javascript
复制
__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。构造函数添加ops来保存和恢复变量。var_list指定将保存和恢复的变量。它可以作为dict或列表传递:

例如:

  • 变量名的dict:键是用于保存或恢复检查点文件中的变量的名称。
  • 变量列表:将在检查点文件中键入变量的op名称。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年06月12日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档