模型的加载:
- 利用tf.train.import_meta_graph来恢复模型
saver = tf.train.import_meta_graph('**.meta')
saver.restore(sess, tf.train.latest_checkpoint('./'))
note:
- inport_meta_graph附加上了.meta文件之前定义的network到当前的graph里,会为你创建graph/network,但是我们还是需要在当前的graph里加载之前训练好的paramters的值
- 利用tf.saver来恢复模型
saver = tf.train.Saver()
saver.restore(sess, tf.train.get_checkpoint_state(path.model_checkpoint_path)
加载模型并增加更多的layers
import tensorflow as tf
sess=tf.Session()
#First let's load meta graph and restore weights
saver = tf.train.import_meta_graph('my_test_model-1000.meta')
saver.restore(sess,tf.train.latest_checkpoint('./'))
# Now, let's access and create placeholders variables and
# create feed-dict to feed new data
graph = tf.get_default_graph()
w1 = graph.get_tensor_by_name("w1:0")
w2 = graph.get_tensor_by_name("w2:0")
feed_dict ={w1:13.0,w2:17.0}
#Now, access the op that you want to run.
op_to_restore = graph.get_tensor_by_name("op_to_restore:0")
#Add more to the current graph
add_on_op = tf.multiply(op_to_restore,2)
print sess.run(add_on_op,feed_dict)
#This will print 120.
如何加载模型并改变原始模型的损失函数?
加载多个模型
问题:主要存在的问题就是“默认图”,会发生变量冲突的操作,导致无法工作。因为我们将所有变量都加载到当前会话采用的默认图中。
解决方案:可采用tf.Session(graph=MyGraph)
来指定采用不同的已经创建好的图。加载多个模型时,将他们加载在不同的图,然后在不同的会话中使用他们。