解决方案

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

而使用多个graph,就需要为每个graph使用不同的Session,但是每个graph也可以在多个Session中使用,这个时候就需要在每个Session使用的时候明确申明使用的graph。

g1 = tf.Graph() # 加载到Session 1的graph
g2 = tf.Graph() # 加载到Session 2的graphsess1 = 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():  # 1with 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分配出现问题从而报错,这种一般可以尝试通过模型的加载顺序来解决。

参考文章

https://www.tensorflow.org/api_docs/python/tf/Session

https://stackoverflow.com/questions/41607144/loading-two-models-from-saver-in-the-same-tensorflow-session

https://stackoverflow.com/questions/39175945/run-multiple-pre-trained-tensorflow-nets-at-the-same-time

Tensorflow同时加载使用多个模型

TensorFlow——加载和使用多个模型解决方案相关推荐

  1. Tensorflow加载预训练模型和保存模型(ckpt文件)以及迁移学习finetuning

    使用tensorflow过程中,训练结束后我们需要用到模型文件.有时候,我们可能也需要用到别人训练好的模型,并在这个基础上再次训练.这时候我们需要掌握如何操作这些模型数据.看完本文,相信你一定会有收获 ...

  2. Tensorflow 加载预训练模型和保存模型

    使用tensorflow过程中,训练结束后我们需要用到模型文件.有时候,我们可能也需要用到别人训练好的模型,并在这个基础上再次训练.这时候我们需要掌握如何操作这些模型数据.看完本文,相信你一定会有收获 ...

  3. tensorflow加载预训练好的模型图(.pb文件)

    千万不要试图在jupyter notebook中打开.pb模型文件,否则你会得到: 这时候我以为shi编码的问题,开始转换编码,转换完成后发现shi乱ma. 后来网上查了,.pb文件里面存储的shi模 ...

  4. TensorFlow 加载多个模型的方法

    采用 TensorFlow 的时候,有时候我们需要加载的不止是一个模型,那么如何加载多个模型呢? 原文:https://bretahajek.com/2017/04/importing-multipl ...

  5. TensorFlow 加载多个模型的方法 - 知乎 https://zhuanlan.zhihu.com/p/53642222

    TensorFlow 加载多个模型的方法 - 知乎 什么是Tensorflow模型? 当你训练好一个神经网络后,你会想保存好你的模型便于以后使用并且用于生产.因此,什么是Tensorflow模型?Te ...

  6. amba simple class驱动_学习笔记:class加载器和双亲委派模型

    类加载器 类加载器有四种 启动类加载器(Bootstrap ClassLoader) 负责加载 JAVA_HOMElib ⽬录中的,或通过-Xbootclasspath参数指定路径中的且被虚拟机认可( ...

  7. java类验证和装载顺序_Java类的加载机制和双亲委派模型

    Java类的加载机制和双亲委派模型 1类的加载机制 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括了:加载(Loading).验证(Verification).准备(Prepar ...

  8. python如何保存训练好的模型_Python机器学习7:如何保存、加载训练好的机器学习模型...

    本文将介绍如何使用scikit-learn机器学习库保存Python机器学习模型.加载已经训练好的模型.学会了这个,你才能够用已有的模型做预测,而不需要每次都重新训练模型. 本文将使用两种方法来实现模 ...

  9. DevExpress 使用 XtraTabbedMdiManager 控件以 Tab样式加载 Mdi窗体并合并 RibbonControl 解决方案

    DevExpress 使用 XtraTabbedMdiManager 控件以 Tab样式加载 Mdi窗体并合并 RibbonControl 解决方案 参考文章: (1)DevExpress 使用 Xt ...

最新文章

  1. C# 中 以 # 打头的 编码 是: html 编码解码地址 转换
  2. jenkins+ant+git+android搭建笔记
  3. J2EE互联网产品打造
  4. 警惕python中的*重复符(运算符)
  5. python安装教程-Python 3.5安装教程
  6. pass 软件_怎么用电脑剪辑音乐?用什么剪辑软件好?
  7. 三个流行MySQL分支的对比
  8. 2021-09-06单纯形计算方法(
  9. Android性能测试
  10. 精英网络技术论坛免杀基础
  11. java字符串下标替换_java字符串下标替换
  12. 怎样搜索计算机中docx格式的文件,如何打开docx文件 打开docx文件方法
  13. asp毕业设计——基于asp+access的车辆调度管理系统设计与实现(毕业论文+程序源码)——车辆调度管理系统
  14. Using 1.7 requires compiling with Android 4.4 (KitKat); currently using API 10
  15. vue中对token的有效期的理解
  16. linux 服务器搭建opvn
  17. HDU2121:Ice_cream’s world II (虚根+有向图最小生成树)
  18. java如何避免恶意连续点击_浅谈一下如何避免用户多次点击造成的多次请求
  19. python标准库:fractions有理数
  20. 非最小相位系统的闭环频域辨识算法

热门文章

  1. php操作mysql的封装类_PHP封装的mysqli数据库操作类示例
  2. python networkx库_python之networkx库小结
  3. python里pai_关于python如何调用win32pai操作cmd的方法
  4. matlab求实根,用弦截法任意实数方程求实根 用matlab 语言编程
  5. 脚本升级_Openssh升级脚本
  6. python语言通过字典实现映射关系_mpython3丨字典的使用介绍
  7. 怎么用PHP语句做出增改删查功能,mysql语句实现简单的增、删、改、查操作示例...
  8. 加载dict_Python的dict实现原理和Java的HashMap之间的区别
  9. sql 赋值 null_巩固SQL - 窗口函数amp;变量amp;数据透视图
  10. 九十一、Python的GUI系列 | QT组件篇