Saver类用于保存和重载变量到checkpoint。
Checkpoint是一系列有特定格式的二进制文件,这些文件会把变量名和tensor值映射起来。
Saver能够通过一个给定的计数器自动给checkpoint文件排序,这使得我们能够在训练一个模型时,在不同的step下保存多个checkpoint。同时Saver还能够自动管理checkpoint,例如我们可以通过Saver来只保存最近N个checkpoint文件,或者每训练N小时保存一个checkpoint。
例如可以通过传入global_step来标出checkpoint文件的顺序。
saver.save(sess, 'my-model', global_step=0) ==> filename: 'my-model-0'
...
saver.save(sess, 'my-model', global_step=1000) ==> filename: 'my-model-1000'
tf.train.Saver._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)
参数:
- var_list: 一个待保存的变量列表或字典,默认是保存全部变量
- reshape: 如果为True,则允许从一个checkpoint中重载一个形状已改变的变量的参数,前提是这个变量中element的数量和变量的type没有变。这个参数在我们对一个Variable进行了reshape操作后,又想从一个旧的checkpoint中重载它时很有用
- sharded: 把checkpoint按设备分片
- max_to_keep: 保存的checkpoint的最大数量,默认是10000小时
- keep_checkpoint_every_n_hours: 保存checkpoint的频率,默认是10000小时
- name: 名字
- restore_sequentially: 如果为True,则允许在不同的设备上序列化重载不同变量,这样在加载非常大的模型时能够节省内存
- saver_def: 可以替换builder的SaverDef proto(一种类似于XML的保存结构化数据的文件),仅用于想要用一个以前建好的图的Saver来重建当前Saver时
- builder: 如果没有提供saver_def则用它来构造Saver,默认是BaseSaverBuilder