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使用内存zipfile对象在内存中打包文件示例
Apr 30 Python
python中while循环语句用法简单实例
May 07 Python
Python线程详解
Jun 24 Python
Python读取图片属性信息的实现方法
Sep 11 Python
python下setuptools的安装详解及No module named setuptools的解决方法
Jul 06 Python
对Python3 goto 语句的使用方法详解
Feb 16 Python
Python数据可视化:箱线图多种库画法
Nov 06 Python
解决tensorflow/keras时出现数组维度不匹配问题
Jun 29 Python
Python 使用双重循环打印图形菱形操作
Aug 09 Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
Mar 02 Python
python自然语言处理之字典树知识总结
Apr 25 Python
使用pd.merge表连接出现多余行的问题解决
Jun 16 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读取目录下所有文件的代码
2008/01/07 PHP
PHP实现图片自动清理的方法
2015/07/08 PHP
php 三大特点:封装,继承,多态
2017/02/19 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
2019/07/12 PHP
原生js实现的贪吃蛇网页版游戏完整实例
2015/05/18 Javascript
Jquery ajax 同步阻塞引起的UI线程阻塞问题
2015/11/17 Javascript
js获取页面及个元素高度、宽度的代码
2016/04/26 Javascript
JS正则替换掉小括号及内容的方法
2016/11/29 Javascript
关于微信jssdk实现多图片上传的一点心得分享
2016/12/13 Javascript
AngularJS打开页面隐藏显示表达式用法示例
2016/12/25 Javascript
老生常谈jacascript DOM节点获取
2017/04/17 Javascript
使用jQuery实现页面定时弹出广告效果
2017/08/24 jQuery
Vue写一个简单的倒计时按钮功能
2018/04/20 Javascript
详解基于electron制作一个node压缩图片的桌面应用
2019/01/29 Javascript
JavaScript刷新页面的几种方法总结
2019/03/28 Javascript
vue 使用rules对表单字段进行校验的步骤
2020/12/25 Vue.js
python网页请求urllib2模块简单封装代码
2014/02/07 Python
通过数据库对Django进行删除字段和删除模型的操作
2015/07/21 Python
Python中的FTP通信模块ftplib的用法整理
2016/07/08 Python
Python中断言Assertion的一些改进方案
2016/10/27 Python
Python迭代器定义与简单用法分析
2018/04/30 Python
Python values()与itervalues()的用法详解
2019/11/27 Python
python编程进阶之类和对象用法实例分析
2020/02/21 Python
Python中bisect的用法及示例详解
2020/07/20 Python
python Paramiko使用示例
2020/09/21 Python
GLAMGLOW香港官网:明星出镜前的秘密武器
2017/03/16 全球购物
美国精品地毯网站:Boutique Rugs
2020/03/04 全球购物
护理专业毕业生自我鉴定
2013/10/08 职场文书
最受欢迎的自我评价
2013/12/22 职场文书
财务会计专业求职信
2014/06/09 职场文书
2015年消费者权益日活动总结
2015/02/09 职场文书
应届毕业生自荐信
2015/03/04 职场文书
求职自我评价怎么写
2015/03/09 职场文书
小学生读书笔记范文
2015/06/30 职场文书
2016春季幼儿园开学寄语
2015/12/03 职场文书
Centos7 Shell编程之正则表达式、文本处理工具详解
2022/08/05 Servers