tensorflow Supervisor 学习笔记

update:supervisor的缺点是遇到问题只会抛异常,所以现在有一个better的管理工具,MonitoredSession

master,chief worker,Supervisor 这几个概念有点搞不清(我最菜.jpg  因此来学习一下。

概述

原生的tensorflow 是各种东西都需要自己手动,如果是小规模的训练问题倒是不大,但是如果是训练的数据量比较大,可能需要训练几天或者几个月。。。

那原生的tensorflow的健壮性可能就比较堪忧。。。

万一断电了之类。。。

这时候我们就可以使用supervisor

其主要提供下面三个功能,以增强训练的健壮性:

  • Handles shutdowns and crashes cleanly.
  • Can be resumed after a shutdown or a crash.
  • Can be monitored through TensorBoard.

supervisor可以看做一个工具,或者说是对原生tensorflow的一层封装,目的主要是通过定期save的方法增强训练健壮性,

就算程序挂掉了也可以从上一次save的checkpoint恢复,而不是从头再来(虽然这些也可以手动实现(?)

同时也可以简化代码量

除了supervisor,还有tf.learn库,里面提供对原生tensorflow更高层的封装,也提供更丰富的功能。

 

实例

来举个具体的例子好了:

在不使用supervisor的时候,我们的训练代码如下:

如果使用supervisor,代码如下:

 

结论

从上面代码可以看出, Supervisor帮助我们处理一些事情
(1)自动去checkpoint加载数据或初始化数据
(2)自身有一个 Saver,可以用来保存checkpoint
(3)有一个 summary_computed用来保存 Summary
所以,我们就不需要:
(1)手动初始化或从 checkpoint中加载数据
(2)不需要创建 Saver,使用 sv内部的就可以
(3)不需要创建 summary writer

 

 

参考资料:

tensorflow学习笔记(二十二):Supervisor

Supervisor: Training Helper for Days-Long Trainings.

 

作者: CrazyKK

ex-ACMer@hust,stackoverflow-engineer@sensetime

说点什么

6 评论 在 "tensorflow Supervisor 学习笔记"

提醒
排序:   最新 | 最旧 | 得票最多

测试新用户

wpDiscuz