1. 保存计算两个变量和的模型。
import tensorflow
as tf
v1 = tf.Variable(tf.
constant(
1.0, shape=[
1], name=
'v1'))
v2 = tf.Variable(tf.
constant(
2.0, shape=[
1], name=
'v2'))
result = v1 + v2
saver = tf.train.Saver()
with tf.Session()
as sess:
tf.global_variables_initializer().run()
saver.save(sess,
'Saved_model/model_me.ckpt')
sess.
close()
2. 加载保存了两个变量和的模型。
with tf.Session()
as sess:
saver.restore(sess,
'Saved_model/model_me.ckpt')
print(sess.run(result))
INFO:tensorflow:Restoring parameters from Saved_model/model_me.ckpt [3.]
3. 直接加载持久化的图。
saver = tf.train.import_meta_graph(
'Saved_model/model_me.ckpt.meta')
with tf.Session()
as sess:
saver.restore(sess,
'Saved_model/model_me.ckpt')
print(sess.run(tf.get_default_graph().get_tensor_by_name(
'add:0')))
INFO:tensorflow:Restoring parameters from Saved_model/model_me.ckpt [3.]
4. 变量重命名 & 变量恢复
v1 = tf
.Variable(tf
.constant(
1.0, shape=[
1]), name =
"other-v1")
v2 = tf
.Variable(tf
.constant(
2.0, shape=[
1]), name =
"other-v2")
saver = tf
.train.Saver({
"v1": v1,
"v2": v2})
import tensorflow as tf
v = tf
.Variable(
0, dtype=tf
.float32, name=
"v")
ema = tf
.train.ExponentialMovingAverage(
0.99)
print( ema
.variables_to_restore())
saver = tf
.train.Saver({
"v/ExponentialMovingAverage": v})
with tf
.Session() as sess:
saver
.restore(sess,
"Saved_model/model2.ckpt")
print (sess
.run(v))
5.保存滑动平均模型
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)]))
6. 加载滑动平均模型。
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))