Tensorflow 同时载入多个模型

原创 2017年12月13日 16:46:25
  • 标签:
  • python /
  • tensorflow /
  • 多个模型
  • 97

有时我们希望在一个python的文件空间同时载入多个模型,例如 我们建立了10个CNN模型,然后我们又写了一个预测类Predict,这个类会从已经保存好的模型restore恢复相应的图结构以及模型参数。然后我们会创建10个Predict的对象Instance,每个Instance负责一个模型的预测。 
Predict的核心为:

class Predict:def __init__(self....):创建sess创建恢复器tf.train.Saver从恢复点恢复参数:tf.train.Saver.restore(...)def predict(self,...):sess.run(output,feed_dict={输入})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

如果我们直接轮流生成10个不同的Predict 对象的话,我们发现tensorflow是会报类似于下面的错误:

  File "/home/jiangminghao/.local/lib/python3.5/site-packages/tensorflow/python/framework/errors_impl.py", line 466, in raise_exception_on_not_ok_statuspywrap_tensorflow.TF_GetCode(status))
tensorflow.python.framework.errors_impl.InvalidArgumentError: Assign requires shapes of both tensors to match. lhs shape= [256,512] rhs shape= [640,512][[Node: save/Assign_14 = Assign[T=DT_FLOAT, _class=["loc:@fullcont/Variable"], use_locking=true, validate_shape=true, _device="/job:localhost/replica:0/task:0/cpu:0"](fullcont/Variable, save/RestoreV2_14)]]During handling of the above exception, another exception occurred:Traceback (most recent call last):File "PREDICT_WITH_SPARK_DATAFLOW_WA.py", line 121, in <module>pre2=Predict(label=new_list[1])File "PREDICT_WITH_SPARK_DATAFLOW_WA.py", line 47, in __init__self.saver.restore(self.sess,self.ckpt.model_checkpoint_path)File "/home/jiangminghao/.local/lib/python3.5/site-packages/tensorflow/python/training/saver.py", line 1560, in restore{self.saver_def.filename_tensor_name: save_path})File "/home/jiangminghao/.local/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 895, in runrun_metadata_ptr)File "/home/jiangminghao/.local/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1124, in _runfeed_dict_tensor, options, run_metadata)File "/home/jiangminghao/.local/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1321, in _do_runoptions, run_metadata)File "/home/jiangminghao/.local/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1340, in _do_callraise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.InvalidArgumentError: Assign requires shapes of both tensors to match. lhs shape= [256,512] rhs shape= [640,512]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

关键就是: 
Assign requires shapes of both tensors to match.意思是载入模型的时候 赋值失败。主要是因为不同对象里面的不同sess使用了同一进程空间下的相同的默认图graph。 
正确的解决方法:

class Predict:def __init__(self....):self.graph=tf.Graph()#为每个类(实例)单独创建一个graphwith self.graph.as_default():self.saver=tf.train.import_meta_graph(...)#创建恢复器#注意!恢复器必须要在新创建的图里面生成,否则会出错。self.sess=tf.Session(graph=self.graph)#创建新的sesswith self.sess.as_default():with self.graph.as_default():self.saver.restore(self.sess,...)#从恢复点恢复参数def predict(self,...):sess.run(output,feed_dict={输入})

Tensorflow加载多个模型相关推荐

  1. TensorFlow 加载多个模型的方法 - 知乎 https://zhuanlan.zhihu.com/p/53642222

    TensorFlow 加载多个模型的方法 - 知乎 什么是Tensorflow模型? 当你训练好一个神经网络后,你会想保存好你的模型便于以后使用并且用于生产.因此,什么是Tensorflow模型?Te ...

  2. TensorFlow 加载多个模型的方法

    采用 TensorFlow 的时候,有时候我们需要加载的不止是一个模型,那么如何加载多个模型呢? 原文:https://bretahajek.com/2017/04/importing-multipl ...

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

    解决方案 在Tensorflow中,所有操作对象都包装到相应的Session中的,所以想要使用不同的模型就需要将这些模型加载到不同的Session中并在使用的时候申明是哪个Session,从而避免由于 ...

  4. 人脸检测实战:使用opencv加载深度学习模型实现人脸检测

    使用 OpenCV 和深度学习进行人脸检测 今天的博文分为三个部分. 在第一部分中,我们将讨论更准确的 OpenCV 人脸检测器的起源以及它们在 OpenCV 库中的位置. 然后我将演示如何使用 Op ...

  5. 【深度学习】Keras加载权重更新模型训练的教程(MobileNet)

    [深度学习]Keras加载权重更新模型训练的教程(MobileNet) 文章目录 1 重新训练 2 keras常用模块的简单介绍 3 使用预训练模型提取特征(口罩检测) 4 总结 1 重新训练 重新建 ...

  6. 超图桌面版加载obj 3D模型 - 2

    在 https://blog.csdn.net/bcbobo21cn/article/details/109041525 里,加载obj格式模型没有出来效果: 下面来看一下其他方法:当前用的版本是10 ...

  7. 超图桌面版加载obj 3D模型

    根据目前看到的资料帮助,使用超图桌面版加载obj 3D模型的步骤如下: 新建场景,图层管理器---普通图层右键,新建KML----开启KML可编辑,右键添加模型. 下面来操作一下: 下一个obj模型: ...

  8. opengl加载显示3D模型UC类型文件

    opengl加载显示3D模型UC类型文件 前置条件 注意事项 项目展示 项目完整C++源代码 前置条件 opengl三方库freeglut,显示uc格式的三维模型文件, 注意事项 源代码 model_ ...

  9. opengl加载显示3D模型3d类型文件

    opengl加载显示3d模型UC类型文件 前置条件 注意事项 项目展示 项目完整C++源代码 前置条件 opengl三方库freeglut,显示3d格式的三维模型文件, 注意事项 源代码 model_ ...

最新文章

  1. Android 自定义View —— Paint
  2. 《Div+CSS 3.0网页布局案例精粹》扫描版[PDF]
  3. python爬虫吧-python爬虫-爬取百度贴吧帖子加图片
  4. 黑客攻击我们的11步详解及防御建议
  5. Nginx Rtmp Module - HLS切片和级联播放
  6. leetcode 贪心_贪心算法:给我最好的,现在就要!
  7. 2020诺奖预测出炉!“引文桂冠”奖今日公布,华人学者戴宏杰入选
  8. IP、ARP、RARP、ICMP、IGMP(网络协议:网络层协议)
  9. 执行pip安装的程序:command not found
  10. NOIP2018游记题解
  11. C使用递归实现前N个元素的和
  12. afc系统服务器维护,自动售检票系统AFC中央系统维护员中级业务模型.PDF
  13. 分享一个selenium jar包 的下载地址,各版本都有,包括selenium-server-standalone.jar、selenium、selenium-server
  14. java arraylist删除元素_java集合类ArrayList操作之删除remove某些元素的案例分析
  15. MessageBox.Show常用的2个方法
  16. 校园饭卡充值系统服务器配置,校园一卡通系统实施方案.doc
  17. 15个代理IP网站,打造免费代理IP池
  18. python使用pip卸载和安装库
  19. 18V降压3.3V,15V降压3.3V的降压IC和LDO芯片方案
  20. linux系统制作qcow2,centos7.6下qcow2镜像制作方法

热门文章

  1. api 原生hbase_HBase客户端API
  2. Windows - Windows批处理
  3. 云服务器怎么用于网站吗,云服务器怎么使用
  4. Spring Boot+Vue从零开始搭建系统(一):项目前端_Vuejs环境搭建
  5. java 数组排序论文_Java中运用数组的四种排序方法
  6. cx_oracle windows缺少100 dll,Windows10无法运行QQ提示缺少MSVCR100.dll的解决方案
  7. mysql多数据源切换_Springboot项目实现Mysql多数据源切换的完整实例
  8. 计算机培训专业中心架,国家高技能人才培养车工培训方案.doc
  9. 我的世界javaui材质包怎么下载_【我的世界指南】七、使用皮肤
  10. SpringBoot + Redis 解决海量重复提交问题