首页 技术 正文
技术 2022年11月21日
0 收藏 508 点赞 2,562 浏览 2011 个字

第一个代码

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 + v2init_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 + v2init_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 tfv = 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)

注意重命名

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,104
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,581
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,428
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,200
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,835
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,918