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在windows命令行下输出彩色文字的方法
Mar 19 Python
Python常用库推荐
Dec 04 Python
python读写json文件的简单实现
Apr 11 Python
python用pickle模块实现“增删改查”的简易功能
Jun 07 Python
十分钟利用Python制作属于你自己的个性logo
May 07 Python
python 读取鼠标点击坐标的实例
Dec 29 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
May 10 Python
Python完成毫秒级抢淘宝大单功能
Jun 06 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
Jan 22 Python
Python Django搭建网站流程图解
Jun 13 Python
了解一下python内建模块collections
Sep 07 Python
PyCharm最新激活码(2020/10/27全网最新)
Oct 27 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中通过ADO调用Access数据库的方法测试不通过
2006/12/31 PHP
11个PHP 分页脚本推荐
2011/08/15 PHP
PHP定时更新程序设计思路分享
2014/06/10 PHP
学习php设计模式 php实现享元模式(flyweight)
2015/12/07 PHP
Laravel框架实现的使用smtp发送邮件功能示例
2019/03/12 PHP
PHP反射原理与用法深入分析
2019/09/28 PHP
jQuery JSON的解析方式分享
2011/04/05 Javascript
jQuery学习总结之元素的相对定位和选择器(持续更新)
2011/04/26 Javascript
jqTransform form表单美化插件使用方法
2012/07/05 Javascript
JS继承--原型链继承和类式继承
2013/04/08 Javascript
jquery 元素控制(追加元素/追加内容)介绍及应用
2013/04/21 Javascript
javaScript NameSpace 简单说明介绍
2013/07/18 Javascript
JavaScript中Cookie操作实例
2015/01/09 Javascript
JavaScript实现更改网页背景与字体颜色的方法
2015/02/02 Javascript
jQuery验证插件validate使用详解
2016/05/11 Javascript
了解JavaScript函数中的默认参数
2019/05/30 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
2019/10/26 Javascript
在Vue中使用this.$store或者是$route一直报错的解决
2019/11/08 Javascript
JavaScript交换变量的常用方法小结【4种方法】
2020/05/07 Javascript
解决vue中axios设置超时(超过5分钟)没反应的问题
2020/09/04 Javascript
python学习手册中的python多态示例代码
2014/01/21 Python
Python遍历zip文件输出名称时出现乱码问题的解决方法
2015/04/08 Python
python修改字典内key对应值的方法
2015/07/11 Python
django实现前后台交互实例
2017/08/07 Python
Python用户推荐系统曼哈顿算法实现完整代码
2017/12/01 Python
对numpy中的transpose和swapaxes函数详解
2018/08/02 Python
python实现从wind导入数据
2019/12/03 Python
wxPython修改文本框颜色过程解析
2020/02/14 Python
UI自动化定位常用实现方法代码示例
2020/10/27 Python
CSS3让登陆面板3D旋转起来
2016/05/03 HTML / CSS
H5离线存储Manifest原理及使用
2020/04/28 HTML / CSS
作弊检讨书1000字
2014/02/01 职场文书
新学期决心书
2014/03/11 职场文书
四风问题个人对照检查材料
2014/09/26 职场文书
2016个人廉洁自律承诺书
2016/03/25 职场文书
python套接字socket通信
2022/04/01 Python