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内存管理分析
Apr 08 Python
python基于multiprocessing的多进程创建方法
Jun 04 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
Feb 13 Python
django+xadmin+djcelery实现后台管理定时任务
Aug 14 Python
浅谈pyqt5中信号与槽的认识
Feb 17 Python
浅谈Python编程中3个常用的数据结构和算法
Apr 30 Python
Python程序打包工具py2exe和PyInstaller详解
Jun 28 Python
详解python和matlab的优势与区别
Jun 28 Python
Python配置文件处理的方法教程
Aug 29 Python
python通过移动端访问查看电脑界面
Jan 06 Python
python多线程semaphore实现线程数控制的示例
Aug 10 Python
python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)
Aug 11 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入门学习知识点七 PHP函数的基本应用
2011/07/14 PHP
PHP服务器页面间跳转实现方法
2012/08/02 PHP
PHP四大安全策略
2014/03/12 PHP
PHP简单实现上一页下一页功能示例
2016/09/14 PHP
PHP房贷计算器实例代码,等额本息,等额本金
2017/04/01 PHP
PHP将身份证正反面两张照片合成一张图片的代码
2017/04/08 PHP
php实现的双色球算法示例
2017/06/20 PHP
解决表单中第一个非隐藏的元素获得焦点的一个方案
2009/10/26 Javascript
两种方法实现文本框输入内容提示消失
2013/03/17 Javascript
js有序数组的连接问题
2013/10/01 Javascript
深入理解javascript原型链和继承
2014/09/23 Javascript
JavaScript fontcolor方法入门实例(按照指定的颜色来显示字符串)
2014/10/17 Javascript
JavaScript 实现完美兼容多浏览器的复制功能代码
2015/04/28 Javascript
JavaScript中string对象
2015/06/12 Javascript
JavaScript截取指定长度字符串点击可以展开全部代码
2015/12/04 Javascript
js判断PC端与移动端跳转
2020/12/24 Javascript
javascript实现异形滚动轮播
2019/11/28 Javascript
JS实现移动端可折叠导航菜单(现代都市风)
2020/07/07 Javascript
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
python time.sleep()是睡眠线程还是进程
2019/07/09 Python
Python 函数用法简单示例【定义、参数、返回值、函数嵌套】
2019/09/20 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
2020/03/13 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
2020/04/23 Python
如何将Pycharm中调整字体大小的方式设置为&quot;ctrl+鼠标滚轮上下滑&quot;
2020/11/17 Python
携程旅行网:中国领先的在线旅行服务公司
2017/02/17 全球购物
Schutz鞋官方网站:Schutz Shoes
2017/12/13 全球购物
英国在线药房和在线药剂师:Chemist 4 U
2020/01/05 全球购物
shell程序中如何注释
2012/01/28 面试题
JAVA程序员面试题
2012/10/03 面试题
简历中个人自我评价范文
2013/12/26 职场文书
社区党员志愿服务活动方案
2014/08/18 职场文书
上班时间打瞌睡检讨书
2014/09/26 职场文书
2015年民主生活会发言材料
2014/12/15 职场文书
2015年学校教科室工作总结
2015/07/20 职场文书
关于践行三严三实的心得体会
2016/01/05 职场文书
Python基于百度AI实现抓取表情包
2021/06/27 Python