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使用marshal模块序列化实例
Sep 25 Python
python使用clear方法清除字典内全部数据实例
Jul 11 Python
python daemon守护进程实现
Aug 27 Python
Python生成随机密码的方法
Jun 16 Python
Python2.7下安装Scrapy框架步骤教程
Dec 22 Python
Python使用Matplotlib实现Logos设计代码
Dec 25 Python
在Python 不同级目录之间模块的调用方法
Jan 19 Python
Python 使用threading+Queue实现线程池示例
Dec 21 Python
Python多线程通信queue队列用法实例分析
Mar 24 Python
python 生成任意形状的凸包图代码
Apr 16 Python
python与js主要区别点总结
Sep 13 Python
python+appium+yaml移动端自动化测试框架实现详解
Nov 24 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编程之高级技巧——利用Mysql函数
2006/10/09 PHP
PHP If Else(elsefi) 语句
2013/04/07 PHP
PHP四大安全策略
2014/03/12 PHP
Zend Framework动作助手(Zend_Controller_Action_Helper)用法详解
2016/03/05 PHP
PHP设计模式(四)原型模式Prototype实例详解【创建型】
2020/05/02 PHP
PHP7变量处理机制修改
2021/03/09 PHP
PHP7新增函数
2021/03/09 PHP
Exjs 入门篇
2010/04/07 Javascript
javascript学习笔记(十一) 正则表达式介绍
2012/06/20 Javascript
button没写type=button会导致点击时提交
2014/03/06 Javascript
js判断当页面无法回退时关闭网页否则就history.go(-1)
2014/08/07 Javascript
jquery的checkbox,radio,select等方法小结
2016/08/30 Javascript
详解JS中的attribute属性
2017/04/25 Javascript
React进阶学习之组件的解耦之道
2017/08/07 Javascript
完美解决手机浏览器顶部下拉出现网页源或刷新的问题
2017/11/30 Javascript
利用ES6实现单例模式及其应用详解
2017/12/09 Javascript
JS中min函数实例讲解
2019/02/18 Javascript
vue 解决遍历对象显示的顺序不对问题
2019/11/07 Javascript
深入了解JS之作用域和闭包
2020/06/16 Javascript
vue使用openlayers实现移动点动画
2020/09/24 Javascript
线程和进程的区别及Python代码实例
2015/02/04 Python
Python使用redis pool的一种单例实现方式
2016/04/16 Python
Python中用psycopg2模块操作PostgreSQL方法
2017/11/28 Python
深入理解Python 关于supper 的 用法和原理
2018/02/28 Python
python 实现数字字符串左侧补零的方法
2018/12/04 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
2018/12/29 Python
Python多线程处理实例详解【单进程/多进程】
2019/01/30 Python
django的分页器Paginator 从django中导入类
2019/07/25 Python
使用 Python 在京东上抢口罩的思路详解
2020/02/27 Python
莫斯科隐形眼镜网上商店:Linzi
2019/07/22 全球购物
Sport-Thieme荷兰:购买体育用品
2019/08/25 全球购物
美术教师自我鉴定
2014/02/12 职场文书
心理学专业大学生职业生涯规划范文
2014/02/19 职场文书
仓库主管岗位职责
2014/03/02 职场文书
《月亮湾》教学反思
2014/04/14 职场文书
2015年度学校应急管理工作总结
2015/10/22 职场文书