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显示进度条的方法
Sep 20 Python
Python中的作用域规则详解
Jan 30 Python
Python探索之修改Python搜索路径
Oct 25 Python
基于Python开发chrome插件的方法分析
Jul 07 Python
Python二叉树的镜像转换实现方法示例
Mar 06 Python
对python中UDP,socket的使用详解
Aug 22 Python
Python如何基于rsa模块实现非对称加密与解密
Jan 03 Python
python 判断txt每行内容中是否包含子串并重新写入保存的实例
Mar 12 Python
Python selenium爬虫实现定时任务过程解析
Jun 08 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
Jul 20 Python
神经网络训练采用gpu设置的方式
Mar 03 Python
python3中apply函数和lambda函数的使用详解
Feb 28 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 星际争霸
ThinkPHP有变量的where条件分页实例
2014/11/03 PHP
jquery 问答知识整理
2010/02/11 Javascript
基于jquery的点击链接插入链接内容的代码
2012/07/31 Javascript
js 在定义的时候立即执行的函数表达式(function)写法
2013/01/16 Javascript
jquery.blockUI.js上传滚动等待效果实现思路及代码
2013/03/18 Javascript
JQuery each()嵌套使用小结
2014/04/18 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
2015/09/12 Javascript
实例讲解jquery与json的结合
2016/01/07 Javascript
基于angularJS的表单验证指令介绍
2016/10/21 Javascript
微信小程序 本地存储及登录页面处理实例详解
2017/01/11 Javascript
jquery实现tab键进行选择后enter键触发click行为
2017/03/29 jQuery
通过button将form表单的数据提交到action层的实例
2017/09/08 Javascript
vue element项目引入icon图标的方法
2018/06/06 Javascript
在vue中v-bind使用三目运算符绑定class的实例
2018/09/29 Javascript
vue实现表格过滤功能
2019/09/27 Javascript
JS判断数组是否包含某元素实现方法汇总
2020/06/24 Javascript
Python调用C# Com dll组件实战教程
2017/10/12 Python
python简单贪吃蛇开发
2019/01/28 Python
python协程之动态添加任务的方法
2019/02/19 Python
Python代码太长换行的实现
2019/07/05 Python
pytorch 模拟关系拟合——回归实例
2020/01/14 Python
Python生成pdf目录书签的实例方法
2020/10/29 Python
Python自动化办公Excel模块openpyxl原理及用法解析
2020/11/05 Python
生物化学研究助理员求职信
2013/10/09 职场文书
应届生求职简历的自我评价怎么写
2013/10/23 职场文书
教师自荐信
2013/12/10 职场文书
文明宿舍获奖感言
2014/02/07 职场文书
春节超市活动方案
2014/08/14 职场文书
党内外群众意见范文
2015/06/02 职场文书
交通安全温馨提示语
2015/07/14 职场文书
研究生毕业登记表的自我鉴定范文
2019/07/15 职场文书
vue3.0 数字翻牌组件的使用方法详解
2022/04/20 Vue.js
MySQL 数据表操作
2022/05/04 MySQL
基于docker安装zabbix的详细教程
2022/06/05 Servers
Go调用Rust方法及外部函数接口前置
2022/06/14 Golang