tensorflow 笔记 15:如何使用 Supervisor

如何使用Supervisor
在不使用Supervisor的时候,咱们的代码常常是这么组织的session

variables
...
ops
...
summary_op
...
merge_all_summarie
saver
init_op

with tf.Session() as sess:
writer = tf.tf.train.SummaryWriter()
sess.run(init)
saver.restore()
for ...:
train
merged_summary = sess.run(merge_all_summarie)
writer.add_summary(merged_summary,i)
saver.save

 

下面介绍如何用Supervisor来改写上面程序spa

import tensorflow as tf
a = tf.Variable(1)
b = tf.Variable(2)
c = tf.add(a,b)
update = tf.assign(a,c)
tf.scalar_summary("a",a)
init_op = tf.initialize_all_variables()
merged_summary_op = tf.merge_all_summaries()
sv = tf.train.Supervisor(logdir="/home/keith/tmp/",init_op=init_op) #logdir用来保存checkpoint和summary
saver=sv.saver #建立saver
with sv.managed_session() as sess: #会自动去logdir中去找checkpoint,若是没有的话,自动执行初始化
for i in xrange(1000):
update_ = sess.run(update)
print update_
if i % 10 == 0:
merged_summary = sess.run(merged_summary_op)
sv.summary_computed(sess, merged_summary,global_step=i)
if i%100 == 0:
saver.save(sess,logdir="/home/keith/tmp/",global_step=i)

 

总结
从上面代码能够看出,Supervisor帮助咱们处理一些事情
(1)自动去checkpoint加载数据或初始化数据
(2)自身有一个Saver,能够用来保存checkpoint
(3)有一个summary_computed用来保存Summary
因此,咱们就不须要:
(1)手动初始化或从checkpoint中加载数据
(2)不须要建立Saver,使用sv内部的就能够
(3)不须要建立summary writer

scala

相关文章
相关标签/搜索