Tensorflow 同时载入多个模型的实例讲解


Posted in Python onJuly 27, 2018

有时我们希望在一个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={输入})

如果我们直接轮流生成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_status
 pywrap_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 run
 run_metadata_ptr)
 File "/home/jiangminghao/.local/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1124, in _run
 feed_dict_tensor, options, run_metadata)
 File "/home/jiangminghao/.local/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1321, in _do_run
 options, run_metadata)
 File "/home/jiangminghao/.local/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1340, in _do_call
 raise 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]

关键就是:

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

正确的解决方法:

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

 def predict(self,...):
  sess.run(output,feed_dict={输入})

以上这篇Tensorflow 同时载入多个模型的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
研究Python的ORM框架中的SQLAlchemy库的映射关系
Apr 25 Python
Django的session中对于用户验证的支持
Jul 23 Python
Python实现OpenCV的安装与使用示例
Mar 30 Python
Python基于property实现类的特性操作示例
Jun 15 Python
Python3 利用requests 库进行post携带账号密码请求数据的方法
Oct 26 Python
python3对拉勾数据进行可视化分析的方法详解
Apr 03 Python
浅谈PySpark SQL 相关知识介绍
Jun 14 Python
实例详解Python模块decimal
Jun 26 Python
浅析python内置模块collections
Nov 15 Python
Python解析json代码实例解析
Nov 25 Python
Win系统PyQt5安装和使用教程
Dec 25 Python
PHP基于phpqrcode类库生成二维码过程解析
May 28 Python
Tensorflow加载预训练模型和保存模型的实例
Jul 27 #Python
Python解决走迷宫问题算法示例
Jul 27 #Python
python保存文件方法小结
Jul 27 #Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
Jul 27 #Python
tensorflow 加载部分变量的实例讲解
Jul 27 #Python
Python基于递归算法求最小公倍数和最大公约数示例
Jul 27 #Python
Python切片操作深入详解
Jul 27 #Python
You might like
PHP实现补齐关闭的HTML标签
2016/03/22 PHP
laravel-admin的图片删除实例
2019/09/30 PHP
Jquery ajaxsubmit上传图片实现代码
2010/11/04 Javascript
基于jquery的多功能软键盘插件
2012/07/25 Javascript
js弹出层包含flash 不能关闭隐藏的2种处理方法
2013/06/17 Javascript
两个select多选模式的选项相互移动(示例代码)
2014/01/11 Javascript
JavaScript中用字面量创建对象介绍
2014/12/31 Javascript
js/jquery判断浏览器类型的方法小结
2015/05/12 Javascript
JavaScript中使用concat()方法拼接字符串的教程
2015/06/06 Javascript
js编写贪吃蛇的小游戏
2020/08/24 Javascript
jquery实现简单的遮罩层
2016/01/08 Javascript
JavaScript实现跟随滚动缓冲运动广告框
2017/07/15 Javascript
JScript实现表格的简单操作
2017/08/15 Javascript
详解Vue.js在页面加载时执行某个方法
2018/11/20 Javascript
vue滚动固定顶部及修改样式的实例代码
2019/05/30 Javascript
JavaScript装饰者模式原理与用法实例详解
2020/03/09 Javascript
解决vue项目中遇到 Cannot find module ‘chalk‘ 报错的问题
2020/11/05 Javascript
[52:37]完美世界DOTA2联赛循环赛 Forest vs DM BO2第一场 10.29
2020/10/29 DOTA
Python正则表达式非贪婪、多行匹配功能示例
2017/08/08 Python
python二维列表一维列表的互相转换实例
2018/07/02 Python
Python面向对象之类和对象属性的增删改查操作示例
2018/12/14 Python
使用NumPy读取MNIST数据的实现代码示例
2019/11/20 Python
jupyter 实现notebook中显示完整的行和列
2020/04/09 Python
Python进行统计建模
2020/08/10 Python
世界领先的高品质定制产品平台:Zazzle
2017/07/23 全球购物
美国领先的家庭智能音响系统品牌:Sonos
2018/07/20 全球购物
品质主管岗位职责
2014/03/16 职场文书
喷漆工的岗位职责
2014/03/17 职场文书
学校募捐倡议书
2014/05/14 职场文书
乳制品整治工作方案
2014/05/29 职场文书
党员干部廉洁自律承诺书
2015/04/28 职场文书
格林童话读书笔记
2015/06/30 职场文书
又涨知识了,自律到底多重要?
2019/06/27 职场文书
不知如何爱孩子,这些方法教会您
2019/08/06 职场文书
sql查询结果列拼接成逗号分隔的字符串方法
2021/05/25 SQL Server
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL