TensorFlow 同时调用多个预训练好的模型
在某些任务中,我们需要针对不同的情况训练多个不同的神经网络模型,这时候,在测试阶段,我们就需要调用多个预训练好的模型分别来进行预测。
弄明白了如何调用单个模型,其实调用多个模型也就顺理成章。我们只需要建立多个图,然后每个图导入一个模型,再针对每个图创建一个会话,分别进行预测即可。
import tensorflow as tf
import numpy as np
# 建立两个 graph
g1 = tf.Graph()
g2 = tf.Graph()
# 为每个 graph 建创建一个 session
sess1 = tf.Session(graph=g1)
sess2 = tf.Session(graph=g2)
X_1 = None
tst_1 = None
yhat_1 = None
X_2 = None
tst_2 = None
yhat_2 = None
def load_model(sess):
"""
Loading the pre-trained model and parameters.
"""
global X_1, tst_1, yhat_1
with sess1.as_default():
with sess1.graph.as_default():
modelpath = r'F:/resnet/model/new0.25-0.35/'
saver = tf.train.import_meta_graph(modelpath + 'model-10.meta')
saver.restore(sess1, tf.train.latest_checkpoint(modelpath))
graph = tf.get_default_graph()
X_1 = graph.get_tensor_by_name("X:0")
tst_1 = graph.get_tensor_by_name("tst:0")
yhat_1 = graph.get_tensor_by_name("tanh:0")
print('Successfully load the model_1!')
def load_model_2():
"""
Loading the pre-trained model and parameters.
"""
global X_2, tst_2, yhat_2
with sess2.as_default():
with sess2.graph.as_default():
modelpath = r'F:/resnet/model/new0.25-0.352/'
saver = tf.train.import_meta_graph(modelpath + 'model-10.meta')
saver.restore(sess2, tf.train.latest_checkpoint(modelpath))
graph = tf.get_default_graph()
X_2 = graph.get_tensor_by_name("X:0")
tst_2 = graph.get_tensor_by_name("tst:0")
yhat_2 = graph.get_tensor_by_name("tanh:0")
print('Successfully load the model_2!')
def test_1(txtdata):
"""
Convert data to Numpy array which has a shape of (-1, 41, 41, 41, 3).
Test a single axample.
Arg:
txtdata: Array in C.
Returns:
The normal of a face.
"""
global X_1, tst_1, yhat_1
data = np.array(txtdata)
data = data.reshape(-1, 41, 41, 41, 3)
output = sess1.run(yhat_1, feed_dict={X_1: data, tst_1: True}) # (100, 3)
output = output.reshape(-1, 1)
ret = output.tolist()
return ret
def test_2(txtdata):
"""
Convert data to Numpy array which has a shape of (-1, 41, 41, 41, 3).
Test a single axample.
Arg:
txtdata: Array in C.
Returns:
The normal of a face.
"""
global X_2, tst_2, yhat_2
data = np.array(txtdata)
data = data.reshape(-1, 41, 41, 41, 3)
output = sess2.run(yhat_2, feed_dict={X_2: data, tst_2: True}) # (100, 3)
output = output.reshape(-1, 1)
ret = output.tolist()
return ret
最后,本程序只是为了说明问题,抛砖引玉,代码有很多冗余之处,不要模仿!
获取更多精彩,请关注「seniusen」!
TensorFlow 同时调用多个预训练好的模型的更多相关文章
- 在 C/C++ 中使用 TensorFlow 预训练好的模型—— 直接调用 C++ 接口实现
现在的深度学习框架一般都是基于 Python 来实现,构建.训练.保存和调用模型都可以很容易地在 Python 下完成.但有时候,我们在实际应用这些模型的时候可能需要在其他编程语言下进行,本文将通过直 ...
- 在 C/C++ 中使用 TensorFlow 预训练好的模型—— 间接调用 Python 实现
现在的深度学习框架一般都是基于 Python 来实现,构建.训练.保存和调用模型都可以很容易地在 Python 下完成.但有时候,我们在实际应用这些模型的时候可能需要在其他编程语言下进行,本文将通过 ...
- TensorFlow 调用预训练好的模型—— Python 实现
1. 准备预训练好的模型 TensorFlow 预训练好的模型被保存为以下四个文件 data 文件是训练好的参数值,meta 文件是定义的神经网络图,checkpoint 文件是所有模型的保存路径,如 ...
- 【猫狗数据集】使用预训练的resnet18模型
数据集下载地址: 链接:https://pan.baidu.com/s/1l1AnBgkAAEhh0vI5_loWKw提取码:2xq4 创建数据集:https://www.cnblogs.com/xi ...
- tensorflow如何正确加载预训练词向量
使用预训练词向量和随机初始化词向量的差异还是挺大的,现在说一说我使用预训练词向量的流程. 一.构建本语料的词汇表,作为我的基础词汇 二.遍历该词汇表,从预训练词向量中提取出该词对应的词向量 三.初始化 ...
- tensorflow 使用预训练好的模型的一部分参数
vars = tf.global_variables() net_var = [var for var in vars if 'bi-lstm_secondLayer' not in var.name ...
- 深度学习tensorflow实战笔记 用预训练好的VGG-16模型提取图像特征
1.首先就要下载模型结构 首先要做的就是下载训练好的模型结构和预训练好的模型,结构地址是:点击打开链接 模型结构如下: 文件test_vgg16.py可以用于提取特征.其中vgg16.npy是需要单独 ...
- 从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史(转载)
转载 https://zhuanlan.zhihu.com/p/49271699 首发于深度学习前沿笔记 写文章 从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史 张 ...
- 【译】深度双向Transformer预训练【BERT第一作者分享】
目录 NLP中的预训练 语境表示 语境表示相关研究 存在的问题 BERT的解决方案 任务一:Masked LM 任务二:预测下一句 BERT 输入表示 模型结构--Transformer编码器 Tra ...
随机推荐
- 【题解】洛谷P1072 Hankson的趣味题 (gcd和lcm的应用)
洛谷P1072:https://www.luogu.org/problemnew/show/P1072 思路 gcd(x,a0)=a1 lcm(x,b0)=b1→b0*x=b1*gcd(x,b0) ( ...
- EF6 AddOrUpdate之后,数据没有改变而是新增了一条数据解决办法
EF:修改不是查询出来的对象dbContext.Web_User.AddOrUpdate(user);dbContext.SaveChanges(); 上面的写法有时候可能不起作用,而且把这条数据重复 ...
- GoBelieve JS IM SDK接入备忘
类IMService 构造函数 参数说明: * `observer` 回调对象(可选) 设置当前用户的access token 属性名:String accessToken 功能:在调用start之前 ...
- c# 开发可替换的通用序列化库
开篇继续吹牛.... 其实没有什么可吹的了,哈哈哈哈哈 主要是写一个通用库,既可以直接用,又方便替换,我的序列化都是采用第三方的哈. 我不上完整代码了,只是给大家讲讲过程. 1.写一个序列化的类,我是 ...
- 小a和uim之大逃离(dp)
题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电,一阵阵雷声.刹那间,狂风大作,乌云布满了天空,紧接着豆大的雨点从天空中打落下来,只见前方出现了一个 ...
- MySql Connector/C++8简介
MySql Connector/C++8是一个用于连接MySQL服务器的C++应用程序.Connector/C++8可用于访问实现文档存储的 MySQL服务器,或者使用SQL查询以传统方式访问.它支持 ...
- 洛谷P1709 [USACO5.5]隐藏口令Hidden Password(最小表示法)
题目描述 有时候程序员有很奇怪的方法来隐藏他们的口令.Binny会选择一个字符串S(由N个小写字母组成,5<=N<=5,000,000),然后他把S顺时针绕成一个圈,每次取一个做开头字母并 ...
- 路由器基础配置之ppp封装下的pap,chap认证
我们将以上面的拓扑图完成本次实验,路由器的默认封装为HDLC,要求为把路由器全被更改为ppp封装,并在router3与router4之间用pap认证,在router4与router5之间用chap认证 ...
- over开窗函数的用法
over(partition by c1.pmid,d1.type,e1.objid order by e1.objid ) pinum 先根据字段排序,pinum.在取第一条数据and p1.pi ...
- weex踩坑记录
weex框架样式问题--我暂时使用最基本的样式css,weex前端开发的话web端会显示各种的html标签.写出的样式也都会显示的很好,但是在app端的话,就没有很好的兼容性,只是支持文档中的一些标签 ...