https://www.cnblogs.com/denny402/p/6940134.html
https://blog.csdn.net/mieleizhi0522/article/details/80535189
https://blog.csdn.net/u012436149/article/details/56484572
_______________________________________________________
转:https://blog.csdn.net/yushensyc/article/details/79638115
TensorFlow的文件保存与读取——variables_to_restore函数
转,原创详见: http://blog.csdn.net/sinat_29957455/article/details/78508793
variables_to_restore函数,是TensorFlow为滑动平均值提供。之前,也介绍过通过使用滑动平均值可以让神经网络模型更加的健壮。我们也知道,其实在TensorFlow中,变量的滑动平均值都是由影子变量所维护的,如果你想要获取变量的滑动平均值需要获取的是影子变量而不是变量本身。
1、滑动平均值模型文件的保存
- import tensorflow as tf
- if __name__ == "__main__":
- v = tf.Variable(0.,name="v")
- #设置滑动平均模型的系数
- ema = tf.train.ExponentialMovingAverage(0.99)
- #设置变量v使用滑动平均模型,tf.all_variables()设置所有变量
- op = ema.apply([v])
- #获取变量v的名字
- print(v.name)
- #v:0
- #创建一个保存模型的对象
- save = tf.train.Saver()
- sess = tf.Session()
- #初始化所有变量
- init = tf.initialize_all_variables()
- sess.run(init)
- #给变量v重新赋值
- sess.run(tf.assign(v,10))
- #应用平均滑动设置
- sess.run(op)
- #保存模型文件
- save.save(sess,"./model.ckpt")
- #输出变量v之前的值和使用滑动平均模型之后的值
- print(sess.run([v,ema.average(v)]))
- #[10.0, 0.099999905]
2、滑动平均值模型文件的读取
- v = tf.Variable(1.,name="v")
- #定义模型对象
- saver = tf.train.Saver({"v/ExponentialMovingAverage":v})
- sess = tf.Session()
- saver.restore(sess,"./model.ckpt")
- print(sess.run(v))
- #0.0999999
3、variables_to_restore函数的使用
- v = tf.Variable(1.,name="v")
- #滑动模型的参数的大小并不会影响v的值
- ema = tf.train.ExponentialMovingAverage(0.99)
- print(ema.variables_to_restore())
- #{'v/ExponentialMovingAverage': <tf.Variable 'v:0' shape=() dtype=float32_ref>}
- sess = tf.Session()
- saver = tf.train.Saver(ema.variables_to_restore())
- saver.restore(sess,"./model.ckpt")
- print(sess.run(v))
- #0.0999999
________________________________________________________