在Tensorflow中,所有操作对象都包装到相应的Session中的,所以想要使用不同的模型就需要将这些模型加载到不同的Session中并在使用的时候申明是哪个Session,从而避免由于Session和想使用的模型不匹配导致的错误。而使用多个graph,就需要为每个graph使用不同的Session,但是每个graph也可以在多个Session中使用,这个时候就需要在每个Session使用的时候明确申明使用的graph。

g1 = tf.Graph() # 加载到Session 1的graph
g2 = tf.Graph() # 加载到Session 2的graph sess1 = tf.Session(graph=g1) # Session1
sess2 = tf.Session(graph=g2) # Session2 # 加载第一个模型
with sess1.as_default():
with g1.as_default():
tf.global_variables_initializer().run()
model_saver = tf.train.Saver(tf.global_variables())
model_ckpt = tf.train.get_checkpoint_state(“model1/save/path”)
model_saver.restore(sess, model_ckpt.model_checkpoint_path)
# 加载第二个模型
with sess2.as_default(): # 1
with g2.as_default():
tf.global_variables_initializer().run()
model_saver = tf.train.Saver(tf.global_variables())
model_ckpt = tf.train.get_checkpoint_state(“model2/save/path”)
model_saver.restore(sess, model_ckpt.model_checkpoint_path) ... # 使用的时候
with sess1.as_default():
with sess1.graph.as_default(): # 2
... with sess2.as_default():
with sess2.graph.as_default():
... # 关闭sess
sess1.close()
sess2.close()

注意事项:

1、在1处使用as_default使session在离开的时候并不关闭,在后面可以继续使用知道手动关闭;

2、由于有多个graph,所以sess.graph与tf.get_default_value的值是不相等的,因此在进入sess的时候必须sess.graph.as_default()明确申明sess.graph为当前默认graph,否则就会报错。

3、不同框架的模型(tf, caffe, torch等)在加载的很有可能导致底层的cuDNN分配出现问题从而报错,这种一般可以尝试通过模型的加载顺序来解决。

 

最新文章

  1. USACO 刷水
  2. Python的神奇方法指南
  3. 第十九章 数据访问(In .net4.5) 之 处理数据
  4. android webview开启html5支持
  5. 浅谈css中的position
  6. UNIX基础知识之程序和进程
  7. [Effective C++ --018]让接口容易被正确使用,不易被误用
  8. leptonica 学习笔记1
  9. HDU 1269 迷宫城堡 【强联通分量(模版题)】
  10. 判断闰年(go语言版本)
  11. 设计模式--模板方法 And State模式
  12. wxWidgets 的 Linux / Windows 混合开发环境
  13. JS对全角与半角的验证,相互转化以及介绍
  14. 数学:确定性的丧失 (M·克莱因 著)
  15. 判断and ,or
  16. Oracle EBS FA 资产编号跳号
  17. tkinter 对键盘和鼠标事件的处理
  18. 微服务监控zipkin、skywalking以及日志ELK监控系列
  19. JSONString 与 JSONData 与字典或者数组互相转化
  20. Maven(四-1) Maven的配置文件settings.xml

热门文章

  1. 使用HTML5制作简单的RPG游戏
  2. Oracle SQL性能优化 - 根据大表关联更新小表
  3. HDFS源码分析心跳汇报之数据块汇报
  4. 关于msbuild 编译.net 4.5新语法错误的解决方法
  5. python使用模板手记
  6. IOS获取当前地理位置文本
  7. win10 64位 安装TensorFlow
  8. 【BZOJ2476】战场的数目 矩阵乘法
  9. EasyNVR无插件流媒体服务器前端技术防止重复提交的方法
  10. 按模板导出Excel