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求crc32值的方法
Oct 05 Python
Python实现基于HTTP文件传输实例
Nov 08 Python
python虚拟环境virtualenv的使用教程
Oct 20 Python
Python3正则匹配re.split,re.finditer及re.findall函数用法详解
Jun 11 Python
python散点图实例之随机漫步
Aug 27 Python
在Python中增加和插入元素的示例
Nov 01 Python
解决pyecharts在jupyter notebook中使用报错问题
Apr 23 Python
Django中多种重定向方法使用详解
Jul 17 Python
Python空间数据处理之GDAL读写遥感图像
Aug 01 Python
Python 中pandas索引切片读取数据缺失数据处理问题
Oct 09 Python
python 用struct模块解决黏包问题
Nov 07 Python
Selenium 安装和简单使用的实现
Dec 04 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
多人战的战术与战略
2020/03/04 星际争霸
php获取301跳转URL简单实例
2013/12/16 PHP
PHP函数实现分页含文本分页和数字分页
2014/10/23 PHP
CentOS6.5 编译安装lnmp环境
2014/12/21 PHP
php 解决substr()截取中文字符乱码问题
2016/07/18 PHP
laravel中的错误与日志用法详解
2016/07/26 PHP
用Div仿showModalDialog模式菜单的效果的代码
2007/03/05 Javascript
最短的javascript:地址栏载入脚本代码
2011/10/13 Javascript
js使浏览器窗口最大化实现代码(适用于IE)
2013/08/07 Javascript
简单介绍JavaScript中字符串创建的基本方法
2015/07/07 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
2015/09/19 Javascript
vueJs实现DOM加载完之后自动下拉到底部的实例代码
2018/08/31 Javascript
jQuery滑动效果实现方法分析
2018/09/05 jQuery
Vue 样式绑定的实现方法
2019/01/15 Javascript
原生js实现抽奖小游戏
2019/06/27 Javascript
防止Layui form表单重复提交的实现方法
2019/09/10 Javascript
vue中监听路由参数的变化及方法
2019/12/06 Javascript
javascript实现电商放大镜效果
2020/11/23 Javascript
[08:53]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS 选手采访
2021/03/11 DOTA
Python函数嵌套实例
2014/09/23 Python
在Linux中通过Python脚本访问mdb数据库的方法
2015/05/06 Python
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
2015/10/18 Python
Python获取昨天、今天、明天开始、结束时间戳的方法
2018/06/01 Python
python实现寻找最长回文子序列的方法
2018/06/02 Python
python中with用法讲解
2020/02/07 Python
如何在Windows中安装多个python解释器
2020/06/16 Python
win10安装python3.6的常见问题
2020/07/01 Python
Omio英国:搜索并比较便宜的巴士、火车和飞机
2019/08/27 全球购物
大学生个人总结的自我评价
2013/10/05 职场文书
怎么写好自荐书
2014/03/02 职场文书
诉讼代理人授权委托书
2014/04/08 职场文书
药店促销活动总结
2014/07/10 职场文书
在宿舍喝酒的检讨书
2014/09/28 职场文书
创先争优宣传标语
2014/10/08 职场文书
2016年七夕爱情寄语
2015/12/04 职场文书
正确的理解和使用Django信号(Signals)
2021/04/14 Python