第一个代码

import tensorflow as tf
v1 = tf.Variable(tf.random_normal([1], stddev=1, seed=1))
v2 = tf.Variable(tf.random_normal([1], stddev=1, seed=1))
result = v1 + v2 init_op = tf.global_variables_initializer()
saver = tf.train.Saver() with tf.Session() as sess:
sess.run(init_op)
saver.save(sess, "Saved_model/model.ckpt")

看看看,就是上面:注意两个方面

(1)saver = tf.train.Saver()提前设定好

(2)saver.save(sess, "Saved_model/model.ckpt")这里面有sess要注意!

第二个代码

import tensorflow as tf
v1 = tf.Variable(tf.random_normal([1], stddev=1, seed=1))
v2 = tf.Variable(tf.random_normal([1], stddev=1, seed=1))
result = v1 + v2 init_op = tf.global_variables_initializer()
saver = tf.train.Saver()
with tf.Session() as sess:
saver.restore(sess, "Saved_model/model.ckpt")
print sess.run(result)

这里有三个要注意的点

(1)上面定义好了模型(变量名字与第一个代码一样),Saver()里什么都没有

(2)saver.restore(sess, "Saved_model/model.ckpt")里有sess,ckpt是数据

(3)result是读取数据的结果,跟这里的变量没关系

第三个代码

import tensorflow as tf
saver = tf.train.import_meta_graph("Saved_model/model.ckpt.meta")
v3 = tf.Variable(tf.random_normal([1], stddev=1, seed=1)) with tf.Session() as sess:
saver.restore(sess, "Saved_model/model.ckpt")
print sess.run(v1)
print sess.run(v2)
print sess.run(v3)

看这里,由于v3是一个变量,要输出的话需要先进行初始化(v1、v2不用)

下面,就是滑动平均了

import tensorflow as tf

v = tf.Variable(0, dtype=tf.float32, name="v")
for variables in tf.global_variables():
print(variables.name) ema = tf.train.ExponentialMovingAverage(0.99)
maintain_averages_op = ema.apply(tf.global_variables())
for variables in tf.global_variables():
print(variables.name)
saver = tf.train.Saver()
with tf.Session() as sess:
init_op = tf.global_variables_initializer()
sess.run(init_op) sess.run(tf.assign(v, 10))
sess.run(maintain_averages_op)
# 保存的时候会将v:0  v/ExponentialMovingAverage:0这两个变量都存下来。
saver.save(sess, "Saved_model/model2.ckpt")
print(sess.run([v, ema.average(v)]))



从上面的代码和图片可以看到开始时是一个变量,后来经过maintain_averages_op = ema.apply(tf.global_variables())就多了一个影子变量,这样子,就把影子变量存好了

下面就是加载滑动平均的影子变量了

v = tf.Variable(0, dtype=tf.float32, name="v")

# 通过变量重命名将原来变量v的滑动平均值直接赋值给v。
saver = tf.train.Saver({"v/ExponentialMovingAverage": v})
with tf.Session() as sess:
saver.restore(sess, "Saved_model/model2.ckpt")
print sess.run(v)

注意重命名

最新文章

  1. pitch yaw roll是什么
  2. 今天无意发现jquery的一个以前的误导
  3. Linux环境下stl库使用(map)
  4. windows程序防狼术入门
  5. 《Java并发编程实战》第十五章 原子变量与非堵塞同步机制 读书笔记
  6. arcpy批量打印地图
  7. CSS hack方式
  8. JQ N级导航
  9. poj1083,基本互斥问题
  10. 指令汇C电子市场开发(一) ActionBar的使用
  11. more语法
  12. html5(八) IndexedDB
  13. Ali流量控制中间件Sentinel
  14. Java并发编程笔记之PriorityBlockingQueue源码分析
  15. Every-SG游戏
  16. Codeforces.919E.Congruence Equation(同余 费马小定理)
  17. 阿里云 qW3xT.4 挖矿病毒问题
  18. IOS 单击手势和cell点击冲突
  19. 解决Mac外接显示器经常没反应
  20. 深入理解JAVA虚拟机JVM

热门文章

  1. Django框架3——模型
  2. Django重新添加字段然后迁移给定默认值依然迁移不生效
  3. shell中通过eval执行一个字符串命令
  4. BZOJ4141 THUSC2013 魔塔 贪心
  5. C# vb .net实现移除透明度效果
  6. bootstrap 模态
  7. 记redis一次Could not get a resource from the pool 异常的解决过程
  8. web项目服务器安装及配置(虚拟机centOS7)
  9. Mongodb 学习笔记(三) .net core SDK
  10. vue实现滑块滑动校验