在某些任务中,我们需要针对不同的情况训练多个不同的神经网络模型,这时候,在测试阶段,我们就需要调用多个预训练好的模型分别来进行预测。

弄明白了如何调用单个模型,其实调用多个模型也就顺理成章。我们只需要建立多个图,然后每个图导入一个模型,再针对每个图创建一个会话,分别进行预测即可。

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 同时调用多个预训练好的模型的更多相关文章

  1. 在 C/C++ 中使用 TensorFlow 预训练好的模型—— 直接调用 C++ 接口实现

    现在的深度学习框架一般都是基于 Python 来实现,构建.训练.保存和调用模型都可以很容易地在 Python 下完成.但有时候,我们在实际应用这些模型的时候可能需要在其他编程语言下进行,本文将通过直 ...

  2. 在 C/C++ 中使用 TensorFlow 预训练好的模型—— 间接调用 Python 实现

    现在的深度学习框架一般都是基于 Python 来实现,构建.训练.保存和调用模型都可以很容易地在 Python 下完成.但有时候,我们在实际应用这些模型的时候可能需要在其他编程语言下进行,本文将通过 ...

  3. TensorFlow 调用预训练好的模型—— Python 实现

    1. 准备预训练好的模型 TensorFlow 预训练好的模型被保存为以下四个文件 data 文件是训练好的参数值,meta 文件是定义的神经网络图,checkpoint 文件是所有模型的保存路径,如 ...

  4. 【猫狗数据集】使用预训练的resnet18模型

    数据集下载地址: 链接:https://pan.baidu.com/s/1l1AnBgkAAEhh0vI5_loWKw提取码:2xq4 创建数据集:https://www.cnblogs.com/xi ...

  5. tensorflow如何正确加载预训练词向量

    使用预训练词向量和随机初始化词向量的差异还是挺大的,现在说一说我使用预训练词向量的流程. 一.构建本语料的词汇表,作为我的基础词汇 二.遍历该词汇表,从预训练词向量中提取出该词对应的词向量 三.初始化 ...

  6. tensorflow 使用预训练好的模型的一部分参数

    vars = tf.global_variables() net_var = [var for var in vars if 'bi-lstm_secondLayer' not in var.name ...

  7. 深度学习tensorflow实战笔记 用预训练好的VGG-16模型提取图像特征

    1.首先就要下载模型结构 首先要做的就是下载训练好的模型结构和预训练好的模型,结构地址是:点击打开链接 模型结构如下: 文件test_vgg16.py可以用于提取特征.其中vgg16.npy是需要单独 ...

  8. 从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史(转载)

    转载 https://zhuanlan.zhihu.com/p/49271699 首发于深度学习前沿笔记 写文章   从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史 张 ...

  9. 【译】深度双向Transformer预训练【BERT第一作者分享】

    目录 NLP中的预训练 语境表示 语境表示相关研究 存在的问题 BERT的解决方案 任务一:Masked LM 任务二:预测下一句 BERT 输入表示 模型结构--Transformer编码器 Tra ...

随机推荐

  1. maven settings 设置

    首页 新随笔 联系 管理 国内阿里Maven仓库镜像Maven配置文件Maven仓库速度快   国内连接maven官方的仓库更新依赖库,网速一般很慢,收集一些国内快速的maven仓库镜像以备用. 最新 ...

  2. 解读JavaScript中的Hoisting机制(js变量声明提升机制)

    hoisting机制:javascript的变量声明具有hoisting机制,JavaScript引擎在执行的时候,会把所有变量的声明都提升到当前作用域的最前面. 知识点一:javascript是没有 ...

  3. [vue warn]:typeError:_this.getMounted.forEach is not a function

    问题:报错 解决:forEach前面给数组,自己放的是Json,所以报错

  4. php第一节(入门语法、数据类型)

    <?php /** * 变量命名用 $ 符 * 变量名称的命名规范 * 1.变量名称以$标示 * 2.变量名称只能以字母和下划线开头 * 3.变量的名称只能包含字母.下划线.数字 * 4.变量名 ...

  5. ABAP术语-Application

    Application 原文:http://www.cnblogs.com/qiangsheng/archive/2007/12/15/995737.html Set of work processe ...

  6. 使用jQuery实现数字逆时针旋转

    要实现数字逆转,最主要是分析我们页面的元素结果,结合选择器充分利用起来! 例如:以下lable中每一个id和值的安排具有一定结构的意义需要用心分析: jQuery代码:

  7. flex布局入门总结——语法篇

    前几天看了阮一峰的Flex布局教程,讲的很不错,总结一下,有兴趣的可以去看原文http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html 一  F ...

  8. js实现区县联动

    1. 引入区县联动函数如下,将provinceList中数据改为需要联动的数据信息 var addressInit = function(_cmbProvince, _cmbCity, _cmbAre ...

  9. Angular : IOC的方式:依赖注入

    依赖注入 @Component, @Injectable 可以允许别的声明在providers里面的Service等注入到被这两个装饰器装饰的类中 Service等可以被声明在app-module.t ...

  10. Hadoop(4)-Hadoop集群环境搭建

    准备工作 开启全部三台虚拟机,确保hadoop100的机器已经配置完成 分发脚本 操作hadoop100 新建一个xsync的脚本文件,将下面的脚本复制进去 vim xsync #这个脚本使用的是rs ...