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 ...
最新文章
- python中 s是什么意思_什么是Pandas?Pandas学习什么?
- 修改windows系統下xampp中apache端口被其他程式占用的問題
- 【Sphinx】MySQL+Sphinx 全文检索的使用和测试
- 1.3 Quick Start中 Step 3: Create a topic官网剖析(博主推荐)
- CentOS 6.3安装(详细图解教程)
- r graphics installing package
- 设计模式:迭代器模式(Iterator)
- shell对于字符串的操作
- fofa自动化爬虫脚本更新+详解
- 【数据库】数据库基本概念:数据库管理系统 / 数据库 / 表 / 数据
- LeetCode 655. 输出二叉树(二叉树高度二叉树遍历)
- CAN总线技术 | 物理层04 - 终端电阻与双绞线(特性阻抗120欧)
- Java之戳中痛点 - (6)避免类型自动转换,例如两个整数相除得浮点数遇坑
- 解决windows 2003 无法安装vss2005的问题
- Java个人职业规划目标改进_java个人职业发展方向规划范文
- 《Intel汇编语言程序设计》环境搭建
- 质量免费--读书笔记(上篇)
- java 在线excel_Java实现最简单的在线打开保存Excel文件
- NoSQL 数据库和传统关系型数据库到底有什么区别?
- 「SwiftUI」延迟执行代码
热门文章
- c语言查找功能的怎么使用方法,求C语言实现查询功能(如果选择3,如何实现查询)...
- R星服务器修改声望,从《荒野大镖客2》Online更新,我们可以看出R星的新思路
- python热部署_定时任务-Quartz(热部署、冷部署)
- matlab矩阵转入tecplot,利用Tecplot导入MATLAB计算结果数据进行三维可视化
- java堆设置成多少合适_jvm~xmx设置多少合适
- linux界面添加地址,Linux系统下图形界面更改IP地址
- android控件常用的属性,android?常用的控件属性
- dubbo k8s 服务发现_服务化改造实践(二)| Dubbo + Kubernetes
- centos编译安装python_centos编译安装python3.6.4
- Spark的stage划分算法源码分析