TensorFlow——加载和使用多个模型解决方案
解决方案
在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——加载和使用多个模型解决方案相关推荐
- Tensorflow加载预训练模型和保存模型(ckpt文件)以及迁移学习finetuning
使用tensorflow过程中,训练结束后我们需要用到模型文件.有时候,我们可能也需要用到别人训练好的模型,并在这个基础上再次训练.这时候我们需要掌握如何操作这些模型数据.看完本文,相信你一定会有收获 ...
- Tensorflow 加载预训练模型和保存模型
使用tensorflow过程中,训练结束后我们需要用到模型文件.有时候,我们可能也需要用到别人训练好的模型,并在这个基础上再次训练.这时候我们需要掌握如何操作这些模型数据.看完本文,相信你一定会有收获 ...
- tensorflow加载预训练好的模型图(.pb文件)
千万不要试图在jupyter notebook中打开.pb模型文件,否则你会得到: 这时候我以为shi编码的问题,开始转换编码,转换完成后发现shi乱ma. 后来网上查了,.pb文件里面存储的shi模 ...
- TensorFlow 加载多个模型的方法
采用 TensorFlow 的时候,有时候我们需要加载的不止是一个模型,那么如何加载多个模型呢? 原文:https://bretahajek.com/2017/04/importing-multipl ...
- TensorFlow 加载多个模型的方法 - 知乎 https://zhuanlan.zhihu.com/p/53642222
TensorFlow 加载多个模型的方法 - 知乎 什么是Tensorflow模型? 当你训练好一个神经网络后,你会想保存好你的模型便于以后使用并且用于生产.因此,什么是Tensorflow模型?Te ...
- amba simple class驱动_学习笔记:class加载器和双亲委派模型
类加载器 类加载器有四种 启动类加载器(Bootstrap ClassLoader) 负责加载 JAVA_HOMElib ⽬录中的,或通过-Xbootclasspath参数指定路径中的且被虚拟机认可( ...
- java类验证和装载顺序_Java类的加载机制和双亲委派模型
Java类的加载机制和双亲委派模型 1类的加载机制 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括了:加载(Loading).验证(Verification).准备(Prepar ...
- python如何保存训练好的模型_Python机器学习7:如何保存、加载训练好的机器学习模型...
本文将介绍如何使用scikit-learn机器学习库保存Python机器学习模型.加载已经训练好的模型.学会了这个,你才能够用已有的模型做预测,而不需要每次都重新训练模型. 本文将使用两种方法来实现模 ...
- DevExpress 使用 XtraTabbedMdiManager 控件以 Tab样式加载 Mdi窗体并合并 RibbonControl 解决方案
DevExpress 使用 XtraTabbedMdiManager 控件以 Tab样式加载 Mdi窗体并合并 RibbonControl 解决方案 参考文章: (1)DevExpress 使用 Xt ...
最新文章
- C# 中 以 # 打头的 编码 是: html 编码解码地址 转换
- jenkins+ant+git+android搭建笔记
- J2EE互联网产品打造
- 警惕python中的*重复符(运算符)
- python安装教程-Python 3.5安装教程
- pass 软件_怎么用电脑剪辑音乐?用什么剪辑软件好?
- 三个流行MySQL分支的对比
- 2021-09-06单纯形计算方法(
- Android性能测试
- 精英网络技术论坛免杀基础
- java字符串下标替换_java字符串下标替换
- 怎样搜索计算机中docx格式的文件,如何打开docx文件 打开docx文件方法
- asp毕业设计——基于asp+access的车辆调度管理系统设计与实现(毕业论文+程序源码)——车辆调度管理系统
- Using 1.7 requires compiling with Android 4.4 (KitKat); currently using API 10
- vue中对token的有效期的理解
- linux 服务器搭建opvn
- HDU2121:Ice_cream’s world II (虚根+有向图最小生成树)
- java如何避免恶意连续点击_浅谈一下如何避免用户多次点击造成的多次请求
- python标准库:fractions有理数
- 非最小相位系统的闭环频域辨识算法
热门文章
- php操作mysql的封装类_PHP封装的mysqli数据库操作类示例
- python networkx库_python之networkx库小结
- python里pai_关于python如何调用win32pai操作cmd的方法
- matlab求实根,用弦截法任意实数方程求实根 用matlab 语言编程
- 脚本升级_Openssh升级脚本
- python语言通过字典实现映射关系_mpython3丨字典的使用介绍
- 怎么用PHP语句做出增改删查功能,mysql语句实现简单的增、删、改、查操作示例...
- 加载dict_Python的dict实现原理和Java的HashMap之间的区别
- sql 赋值 null_巩固SQL - 窗口函数amp;变量amp;数据透视图
- 九十一、Python的GUI系列 | QT组件篇