TensorFlow加载多个模型

Tensorflow 同时加载多个模型,以及与keras模型混用 Tensorflow同时加载使用多个模型 Tensorflow,所有操作对象都包装在相应的session中,所以想要使用不同的模型就要将这些模型加载到不同session中,并且声明使用的时候申请是哪个session,从而避免由于session和想使用的模型不匹配导致错误,而使用多个graph就需要为每个graph使用不同的session,但是每个graph也可以在多个session中使用,这个时... 阅读详情

通常我们在开发中根据不同任务需要不同的预训练模型,因此需要同时加载多个模型文件。但是同时加载多个TensorFlow预训练模型时,若还是采用加载单个模型文件一样的方式则会因图冲突而加载失败。主要是因为不同对象里面的不同sess使用了同一进程空间下的相同的默认图graph。 因此,我们需要为为每个类(实例)单独创建一个graph

g1 = tf.Graph() #为每个类(实例)单独创建一个graph
g2 = tf.Graph()

sess_config = tf.ConfigProto(allow_soft_placement=True, log_device_placement=True)
#亲测,若你训练模型时指定了设备,如上一行代码,则你restore时也要加上,不然会出错。
sess1 = tf.Session(graph=g1, config=sess_config)
sess2 = tf.Session(graph=g2, config=sess_config)

#加载模型1,
with sess1.as_default():
        with sess1.graph.as_default():
            tf.global_variables_initializer().run()
            model_saver = tf.train.import_meta_graph(model_path_1+'model.meta')
            model_cpt = tf.train.get_checkpoint_state(model_path_1)
            model_saver.restore(sess1, model_cpt.model_checkpoint_path)
            graph = tf.get_default_graph()
            x1 = graph.get_tensor_by_name('x1:0')
            x2 = graph.get_tensor_by_name('keep_prob:0')
            y1 = graph.get_tensor_by_name('y1:0')

#加载模型2
with sess2.as_default():
        with sess2.graph.as_default():
            tf.global_variables_initializer().run()
            model_saver = tf.train.import_meta_graph(model_path_2+'model.meta')
            model_ckpt = tf.train.get_checkpoint_state(model_path_2)
            model_saver.restore(sess2, model_ckpt.model_checkpoint_path)
            graph = tf.get_default_graph()
            x1 = graph.get_tensor_by_name('x1:0')
            x2 = graph.get_tensor_by_name('x2:0')
            x3 = graph.get_tensor_by_name('keep_prob:0')
            y2 = graph.get_tensor_by_name('y2:0')

#使用模型1
with sess1.as_default():
        with sess1.graph.as_default():
            feed = {x1: a, x2: 1.0}
            res1 = sess1.run(y1, feed_dict=feed)
            .....

#使用模型2
with sess2.as_default():
        with sess2.graph.as_default():
            feed = {x1: b, x2: c,x3:1.0}
            res2 = sess2.run(y2, feed_dict=feed)
            .....

使用上述方式时,你在定义模型时一定要给变量命名,不然不方便获取tensor。此种方式不需要你重新定义模型。

我在实际操作过程中,试了另一种方式:还是要为每个实例单独建图,但是在加载时你再次定义模型。这种方式不用你一个一个的根据变量名来获取tensor。

g1 = tf.Graph() #为每个类(实例)单独创建一个graph
g2 = tf.Graph()

sess_config = tf.ConfigProto(allow_soft_placement=True, log_device_placement=True)

sess1 = tf.Session(graph=g1, config=sess_config)
sess2 = tf.Session(graph=g2, config=sess_config)

#加载模型1
with sess1.as_default():
        with sess1.graph.as_default():
            #此处与加载单模型方式一样,但你得再次定义模型。
            #若你以前的模型文件是定义为类的,则此处非常方便
            #例如我的模型
            model1 = CNNModel1(config.MAX_SEQ_LENGTH,
                                 np.array(embedded),
                                 config.EMBEDDING_DIM,
                                 config.KERNEL_SIZE,
                                 config.NUM_FILTER,
                                 config.DROPOUT_KEEP_PROB,
                                 config.MARGIN_VALUE,
                                 config.LEARNING_RATE,
                                 config.L2_REG)
            #接下来的就很熟悉了
            sess1.run(tf.global_variables_initializer())
            saver = tf.train.Saver()
            saver.restore(sess1, model_path_1+'model')

#加载模型2
with sess2.as_default():
        with sess2.graph.as_default():
            model2 = CNNModel2(config.MAX_SEQ_LENGTH,
                                 np.array(embedded),
                                 config.EMBEDDING_DIM,
                                 config.KERNEL_SIZE,
                                 config.NUM_FILTER,
                                 config.DROPOUT_KEEP_PROB,
                                 config.MARGIN_VALUE,
                                 config.LEARNING_RATE,
                                 config.L2_REG)
            #接下来的就很熟悉了
            sess2.run(tf.global_variables_initializer())
            saver = tf.train.Saver()
            saver.restore(sess2, model_path_2+'model')

#使用模型的方法与之前是一样的。
with sess1.as_default():
        with sess1.graph.as_default():
            feed1 = {model1.x:a,model1.keep_prob:1.0}
            res1 = sess1.run(model1.y1, feed_dict=feed1)
            ....

with sess2.as_default():
        with sess2.graph.as_default():
            feed2 = {model1.x1:a,model.x2:b,model1.keep_prob:1.0}
            res2 = sess2.run(model1.y2, feed_dict=feed1)
            ....
            

以上表述全为实际测试得到的经验,若有错误欢迎指出。若大家还有其它方案,也欢迎讨论。

Tensorflow 同时载入多个模型的实例讲解 今天小编就为大家分享一篇Tensorflow 同时载入多个模型的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 立即下载

相关推荐

阿里云网络架构设计

背景 一个企业上云,首先要考虑整个网络的规划,涉及到云上和云下的网络规划,云上VPC的规划,云上不同地域VPC的互通,云上可用区的选择等等,所以一定要提前规划好整体的网络架构,现在阿里云云上的虚拟化网络解决方案已经完全转向 了云企业网,所以所有使用阿里云的企业客户多多少少都会使用阿里云的CEN 支撑自己的业务。 云企业网介绍 云企业网(Cloud Enterprise Network)是承载在阿里云提供的高性能、低延迟的私有全球网络上的一张高可用网络。 IDC专线接入CEN 首先面临的是云上和云下打通,那么

修电脑的码农 4840

Tensorflow加载多个模型方法实践——Graph与Session

Tensorflow加载多个模型方法是在Tensorflow中创建多个Session,每个Session运行一个graph。

肖永威的专栏 2779

Qlib数据获取避坑指南:从CSV导入到自定义数据源的完整解决方案

本文详细解析了Qlib数据获取的完整解决方案,从CSV导入到自定义数据源,涵盖了股票数据处理的关键技巧和常见陷阱。特别针对Qlib平台的数据格式要求和复权处理提供了实用指南,帮助量化投资者高效整合Wind等第三方数据源,确保数据质量与模型性能。

weixin_29047919的博客 304

Tensorflow同时加载两个网络模型

Tensorflow同时加载两个网络模型 首先贴上我的参考来源 tensorflow中一种融合多个模型的方法 1.使用场景 假设我们有训练好的模型A,B,C,我们希望使用A,B,C中的部分或者全部变量,合成为一个模型D,用于初始化或其他目的,就需要融合多个模型的方法 2.如何实现 我们可以先声明模型D,再创建多个Saver实例,分别从模型A,B,C的保存文件(checkpoint文件)中读取所需的变量值,来达成这一目的,下面是示例代码: 首先创建一个只包含w1,w2两个变量的模型,初始化后保存: 然后再创

Roc_233的博客 2377

手把手教你用FPGA解析AD9680的JESD204B数据流(附Verilog代码)

本文详细介绍了如何利用FPGA解析AD9680的JESD204B数据流,包括协议核心机制、硬件平台搭建、Verilog代码实现及调试技巧。通过实战案例和代码示例,帮助工程师快速掌握高速ADC数据采集与处理技术,提升系统性能。

weixin_33640562的博客 372

立创EDA手动拼板实战:当自带功能不够用,如何用‘复制粘贴’搞定异形拼版与特殊布局

本文详细介绍了立创EDA手动拼板技术在异形拼版与特殊布局中的应用实战。通过CTRL+SHIFT+V等核心操作技巧,解决混合尺寸拼板、特殊间距需求等复杂场景,提升PCB设计效率与灵活性,特别适合需要高精度控制的射频电路和医疗设备项目。

weixin_31967485的博客 386

大模型微调 - 自动加载预训练模型

flyfish

二分掌柜的 2141

基于YOLOv8的应急通道占用监测系统设计与实现

通过详细的数据集选择、模型训练、代码实现等内容,本博客为您提供完整的系统搭建过程,帮助您构建高效的监测系统。然而,在一些建筑物和公共场所中,应急通道经常被不当占用,导致紧急情况下无法及时使用,严重影响人员的疏散效率。YOLOv8是YOLO系列中的最新版本,它通过引入深度学习的优化和改进,在保证检测速度的同时,显著提升了检测精度。同时,随着深度学习技术的不断发展,检测精度与速度的提升将使得该系统在更广泛的场景中应用。:如果已有监控设备,可以采集应急通道的实时视频,并进行标注,生成占用监测数据集。

YOLO 797

tesnsorflow对多模型进行训练、加载、合并操作

有时我们想训练多个模型,但是又不想一个个的写py文件,那么如何在一个文件中达到训练多个模型的目的呢?以下是个人的一点思路,希望能给大家一些帮助。 完整代码见GitHub 一、多模型训练 多模型训练的具体思路就是在不同的graph中创建模型,一般是写一个类来实现,网上也有很多例子,我这里就直接复制过来了,当然有稍作修改。为了简单说明,我举个例子:假设我有两份数据(y=2xy=2xy=2x和y=3x+...

weixin_43152925的博客 2525

嵌入式代码审计中常见的漏洞(四)

经过漫长时间的迭代更新,内容从一开始的碎片化网罗搜集,到排版与整合划分,再到学习与实践验证,最后摒弃初始,用自己的语言与实践结论通俗的将它展现出来。强化知识技能的同时也为读者带来更好的阅读体验。 本篇介绍了以下代码安全问题: 编号 漏洞 1 敏感信息硬编码 2 未初始化安全 3 越界访问 4 迭代器失效 5 迭代器尾部解引用

武天旭的博客 3318

【数据集实例】CMIP6气候模式数据下载-以河东地区为例

以河东地区为例,介绍CMIP6数据下载及处理

WW、forever的博客 4945

tensorflow2读取h5模型并预测

**tensorflow2读取h5模型并预测** import tensorflow as tf from tensorflow.keras.preprocessing import image from tensorflow.keras.applications.resnet50 import preprocess_input import numpy as np from tensorflow.keras.models import load_model img = image.load_img('

qq_41371790的博客 7698

PyTorch实战(19)——变分自编码器(Variational Autoencoder,VAE)

变分自编码器 (Variational Autoencoder, VAE) 是一种结合了自编码器和概率建模的生成模型,通过编码器将输入数据映射到潜在空间中的概率分布,并通过解码器将从潜在空间采样得到的潜在变量映射回原始数据空间,实现了数据的生成和特征学习。本节中,将介绍变分自编码器的基本概念,并使用 PyTorch 实现变分自编码器生成新图像。

盼小辉丶的博客 2898

加载dict_TensorFlow 加载多个模型的方法

采用 TensorFlow 的时候,有时候我们需要加载的不止是一个模型,那么如何加载多个模型呢?原文:https://bretahajek.com/2017/04/importing-multiple-tensorflow-models-graphs/ 关于 TensorFlow 可以有很多东西可以说。但这次我只介绍如何导入训练好的模型(图),因为我做不到导入第二个模型并将它和第一个模型一起使用。...

weixin_42503264的博客 137

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

tensorflow加载多个固化pb模型

使用tensorflow加载多个pb模型时,会引起变量冲突,解决方法按照如下方法加载模型可解决: class Model: def __init__(self, model_file): self.graph = tf.Graph() self.graph_def = tf.GraphDef() with gfile.FastGFile(mo...

wangwei19900806的专栏 1053

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

TensorFlow 加载多个模型的方法

采用 TensorFlow 的时候,有时候我们需要加载的不止是一个模型,那么如何加载多个模型呢? 原文:https://bretahajek.com/2017/04/importing-multiple-tensorflow-models-graphs/ 关于 TensorFlow 可以有很多东西可以说。但这次我只介绍如何导入训练好的模型(图),因为我做不到导入第二个模型并将它和第一个模型一起...

AI 算法笔记 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

tensorflow saver_TensorFlow 加载多个模型的方法

采用 TensorFlow 的时候,有时候我们需要加载的不止是一个模型,那么如何加载多个模型呢?原文:https://bretahajek.com/2017/04/importing-multiple-tensorflow-models-graphs/ 关于 TensorFlow 可以有很多东西可以说。但这次我只介绍如何导入训练好的模型(图),因为我做不到导入第二个模型并将它和第一个模型一起使用。...

weixin_39576104的博客 148

Tensorflow同时加载使用多个模型

在Tensorflow中,所有操作对象都包装到相应的Session中的,所以想要使用不同的模型就需要将这些模型加载到不同的Session中并在使用的时候申明是哪个Session,从而避免由于Session和想使用的模型不匹配导致的错误。而使用多个graph,就需要为每个graph使用不同的Session,但是每个graph也可以在多个Session中使用,这个时候就需要在每个Session使用的时候明确申明使用的graph。 g1 = tf.Graph() # 加载到Session 1的graph g2

mjiansun的专栏 1358

Tensorflow加载多个模型

Tensorflow加载多个模型

jacke121的专栏 5994

tensorflow(3)同时加载多个模型的一次尝试

  本文将会介绍如何使用tensorflow来同时加载多个模型,其中生成的模型文件为ckpt格式。   本文以Github上的bertNER项目为模板来介绍。项目结构如下: 我们已经生成了三个模型:war,weapon,geo,每个模型都有各自对应的ckpt、config、maps、以及log文件。三个模型的模型参数都一样,最大长度为128。 加载一个模型的服务   由于bertNER项目已经为我们提供好了预测脚本predict.py,因此我们很方便地就能将它改成为HTTP服务的方式,代码如下: # -*

山阴少年 1661

TensorFlow——加载和使用多个模型解决方案

解决方案 在Tensorflow中,所有操作对象都包装到相应的Session中的,所以想要使用不同的模型就需要将这些模型加载到不同的Session中并在使用的时候申明是哪个Session,从而避免由于Session和想使用的模型不匹配导致的错误。 而使用多个graph,就需要为每个graph使用不同的Session,但是每个graph也可以在多个Session中使用,这个时候就需要在每个Session使用的时候明确申明使用的graph。 g1 = tf.Graph() # 加载到Session 1的

无限迭代中...... 1006

tensorflow-serving的docker方式同时加载多个模型

预备备:docker使用的是17.05.0-ce及以上的版本,之前用的13.XX的版本没有--mount这样的命令 0)下载安装tensorflow #官网上抄的,啊哈哈 docker pull tensorflow/serving git clone https://github.com/tensorflow/serving 1)创建一个多模型配置文件 #从tensorflow-se...

诗人的泪 1274

keras和Tensorflow同时加载多个模型,以及与keras模型混用

Tensorflow同时加载使用多个模型(keras同理,只要是tf的后端) Tensorflow,所有操作对象都包装在相应的session中,所以想要使用不同的模型就要将这些模型加载到不同session中,并且声明使用的时候申请是哪个session,从而避免由于session和想使用的模型不匹配导致错误,而使用多个graph就需要为每个graph使用不同的session,但是每个graph也可以在多个session中使用,这个时候就需要在每个session中使用的时候明确使用的graph。 g1 =

mjiansun的专栏 1740

关于Tensorflow 加载和使用多个模型的方式

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

weixin_34384681的博客 415
上一篇: 知识图谱随笔
下一篇: 可视化词向量-TSNE
Class_guy
博客等级 码龄9年 43粉丝 20原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值