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的Bottle框架中返回静态文件和JSON对象的方法
Apr 30 Python
深入解答关于Python的11道基本面试题
Apr 01 Python
Python3 适合初学者学习的银行账户登录系统实例
Aug 08 Python
python微信跳一跳系列之棋子定位像素遍历
Feb 26 Python
python爬虫实例详解
Jun 19 Python
python中的json总结
Oct 11 Python
Python从单元素字典中获取key和value的实例
Dec 31 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
Feb 18 Python
解决python中import文件夹下面py文件报错问题
Jun 01 Python
python对 MySQL 数据库进行增删改查的脚本
Oct 22 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
Mar 04 Python
PyTorch 如何检查模型梯度是否可导
Jun 05 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中使用php5-ffmpeg撷取视频图片实例
2015/01/07 PHP
php使用preg_match()函数验证ip地址的方法
2017/01/07 PHP
解决laravel5.4下的group by报错的问题
2019/10/16 PHP
JavaScript 序列化对象实现代码
2009/12/18 Javascript
详解jQuery插件开发中的extend方法
2013/11/19 Javascript
EasyUI实现二级页面的内容勾选的方法
2015/03/01 Javascript
javascript中eval函数用法分析
2015/04/25 Javascript
jquery使用经验小结
2015/05/20 Javascript
快速学习jQuery插件 jquery.validate.js表单验证插件使用方法
2015/12/01 Javascript
浅谈js算法和流程控制
2016/12/29 Javascript
微信小程序 蓝牙的实现实例代码
2017/06/27 Javascript
谈谈VUE种methods watch和compute的区别和联系
2017/08/01 Javascript
微信小程序 input表单与redio及下拉列表的使用实例
2017/09/20 Javascript
使用vue-cli打包过程中的步骤以及问题的解决
2018/05/08 Javascript
css配合JavaScript实现tab标签切换效果
2018/10/11 Javascript
vue的三种图片引入方式代码实例
2019/11/19 Javascript
node.js express捕获全局异常的三种方法实例分析
2019/12/27 Javascript
[01:00:44]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第三局
2016/03/04 DOTA
总结Python中逻辑运算符的使用
2015/05/13 Python
python Flask实现restful api service
2017/12/04 Python
python反转列表的三种方式解析
2019/11/08 Python
基于python plotly交互式图表大全
2019/12/07 Python
Django admin 实现search_fields精确查询实例
2020/03/30 Python
Python不支持 i ++ 语法的原因解析
2020/07/22 Python
CSS去掉A标签(链接)虚线框的方法
2014/04/01 HTML / CSS
澳大利亚领先的在线药房:Pharmacy Online(有中文站)
2020/02/22 全球购物
银行自荐信范文
2013/10/07 职场文书
职业教育毕业生求职信
2013/11/09 职场文书
单位介绍信范文
2014/01/18 职场文书
社会公德演讲稿
2014/05/20 职场文书
机电专业求职信
2014/06/14 职场文书
保卫钓鱼岛口号
2014/06/20 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
春秋淹城导游词
2015/02/11 职场文书
社区扶贫帮困工作总结
2015/05/20 职场文书
react 项目中引入图片的几种方式
2021/06/02 Javascript