tensorflow 保存模型和取出中间权重例子

```import tensorflow as tf
import numpy as np
import os
import h5py
import pickle
from tensorflow.python.framework import graph_util
from tensorflow.python.platform import gfile
#设置使用指定GPU
os.environ["CUDA_VISIBLE_DEVICES"] = "1"
#下面这段代码是在训练好之后将所有的权重名字和权重值罗列出来，训练的时候需要注释掉
for ele in variables:
print(ele)

x = tf.placeholder(tf.float32, shape=[None, 1])
y = 4 * x + 4

w = tf.Variable(tf.random_normal([1], -1, 1))
b = tf.Variable(tf.zeros([1]))
y_predict = w * x + b

loss = tf.reduce_mean(tf.square(y - y_predict))
train = optimizer.minimize(loss)

isTrain = False#设成True去训练模型
train_steps = 100
checkpoint_steps = 50
checkpoint_dir = ""

saver = tf.train.Saver() # defaults to saving all variables - in this case w and b
x_data = np.reshape(np.random.rand(10).astype(np.float32), (10, 1))

with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
if isTrain:
for i in xrange(train_steps):
sess.run(train, feed_dict={x: x_data})
if (i + 1) % checkpoint_steps == 0:
saver.save(sess, checkpoint_dir + "model.ckpt", global_step=i+1)
else:
ckpt = tf.train.get_checkpoint_state(checkpoint_dir)
if ckpt and ckpt.model_checkpoint_path:
saver.restore(sess, ckpt.model_checkpoint_path)
else:
pass
print(sess.run(w))
print(sess.run(b))
graph_def = tf.get_default_graph().as_graph_def()
#通过修改下面的函数，个人觉得理论上能够实现修改权重，但是很复杂，如果哪位有好办法，欢迎指教
output_graph_def = graph_util.convert_variables_to_constants(sess, graph_def, ["Variable"])
with tf.gfile.FastGFile("./test.pb", "wb") as f:
f.write(output_graph_def.SerializeToString())

with tf.Session() as sess:
#对应最后一部分的写，这里能够将对应的变量取出来
with gfile.FastGFile("./test.pb", "rb") as f:
graph_def = tf.GraphDef()