您的位置:首页 > 大数据 > 人工智能

tensorflow 1.0之tf.train.Saver 文档翻译

2017-02-22 12:20 627 查看
tf.train.Saver

类tf.train.Saver

请参阅指南:变量>保存和恢复变量

保存和恢复变量。

有关变量,保存和恢复的概述,请参阅变量。

Saver类添加了ops来保存和恢复变量到检查点和从检查点恢复变量。它还提供了运行这些操作的便利方法。

检查点是以变量名称与张量值映射的专有格式的二进制文件。检查检查点内容的最好方法是使用Saver加载它。

Savers可以使用提供的计数器自动为检查点文件名编号。这允许您在训练模型时在不同的步骤保持多个检查点。例如,您可以使用训练步骤编号为检查点文件名编号。为了避免填满磁盘,存储器自动管理检查点文件。例如,它们可以只保留N个最近的文件,或者每N个训练时间保留一个检查点。

通过将值传递给save()的可选global_step参数,可以对检查点文件名进行编号:

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表示要保留的最近检查点文件的最大数目。创建新文件时,将删除较旧的文件。如果为None或0,则保留所有检查点文件。默认值为5(即,保留5个最近的检查点文件。)

keep_checkpoint_every_n_hours:除了保留最新的max_to_keep检查点文件,您可能需要为每N个小时的训练保留一个检查点文件。如果您想稍后分析模型在长时间训练期间的进展情况,这将非常有用。例如,传递keep_checkpoint_every_n_hours = 2可确保每2个小时的训练保留一个检查点文件。默认值10,000小时有效地禁用此功能。

注意,你仍然需要调用save()方法来保存模型。将这些参数传递给构造函数不会自动为您保存变量。

定期保存的培训计划如下:

... ...

#创建一个保护程序。

saver = tf.train.Saver(... variables ...)

#启动图表和火车,每1000步保存模型。

sess = tf.Session()

for xrange(1000000):

    sess.run(.. training_op ..)

    如果步骤%1000 == 0:

        #将步骤编号附加到检查点名称:

        saver.save(sess,'my-model',global_step = step)

除了检查点文件,存储器在磁盘上保存最近的检查点列表的协议缓冲区。这用于管理编号的检查点文件和通过latest_checkpoint(),这使得很容易发现到最近的检查点的路径。该协议缓冲区存储在检查点文件旁边的名为“checkpoint”的文件中。

如果创建多个存储器,则可以在调用save()中为协议缓冲区文件指定不同的文件名。

属性

last_checkpoints

尚未删除的检查点文件名列表。

您可以将任何返回的值传递给restore()。

返回:

检查点文件名列表,从最旧到最新。

方法

__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。 SaverDef.V2,pad_step_number
= False)

创建节省。

构造函数添加ops来保存和恢复变量。

var_list指定将要保存和恢复的变量。它可以作为dict或列表传递:

名称对变量的dict:键是将用于保存或恢复检查点文件中的变量的名称。

变量列表:变量将以检查点文件中的操作名称键入。

例如:

v1 = tf.Variable(...,name ='v1')

v2 = tf.Variable(...,name ='v2')

#将变量作为dict传递:

saver = tf.train.Saver({'v1':v1,'v2':v2})

#或将它们作为列表传递。

saver = tf.train.Saver([v1,v2])

#传递列表相当于传递带有变量op名称的dict

#为键:

saver = tf.train.Saver({v.op.name:v for v in [v1,v2]})

可选的reshape参数(如果为True)允许从保存文件中恢复变量,其中变量具有不同的形状,但元素和类型的数量相同。如果您已重新塑造变量并希望从较旧的检查点重新加载它,这将非常有用。

可选的分片参数(如果为True)指示保存程序为每个设备分割检查点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: