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 26 Python
使用graphics.py实现2048小游戏
Mar 10 Python
Python使用dis模块把Python反编译为字节码的用法详解
Jun 14 Python
Python中Numpy ndarray的使用详解
May 24 Python
Python Numpy计算各类距离的方法
Jul 05 Python
python的json中方法及jsonpath模块用法分析
Dec 06 Python
pytorch 图像预处理之减去均值,除以方差的实例
Jan 02 Python
pycharm部署、配置anaconda环境的教程
Mar 24 Python
python3安装OCR识别库tesserocr过程图解
Apr 02 Python
Python中的wordcloud库安装问题及解决方法
May 27 Python
Python内置函数及功能简介汇总
Oct 13 Python
python编程项目中线上问题排查与解决
Nov 01 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
中国收音机工业发展史
2021/03/02 无线电
php验证邮箱和ip地址最简单方法汇总
2015/10/30 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
tp5框架使用composer实现日志记录功能示例
2019/01/10 PHP
javascript动画效果类封装代码
2007/08/28 Javascript
javascript 图片上一张下一张链接效果代码
2010/03/12 Javascript
js 单击式的下拉菜单效果实例
2013/08/13 Javascript
js判断选择时间不能小于当前时间的示例代码
2013/09/24 Javascript
手机平板等移动端适配跳转URL的js代码
2014/01/25 Javascript
javascript运行机制之this详细介绍
2014/02/07 Javascript
用JavaScript实现使用鼠标画线的示例代码
2014/08/19 Javascript
jQuery实现的fixedMenu下拉菜单效果代码
2015/08/24 Javascript
jQuery实现选项卡切换效果简单演示
2015/12/09 Javascript
微信小程序 http请求详细介绍
2016/10/09 Javascript
微信小程序异步API为Promise简化异步编程的操作方法
2018/08/14 Javascript
详解如何配置vue-cli3.0的vue.config.js
2018/08/23 Javascript
JS实现十分钟倒计时代码实例
2018/10/18 Javascript
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
2019/01/07 Javascript
微信小程序 动态修改页面数据及参数传递过程详解
2019/09/27 Javascript
详解JS深拷贝与浅拷贝
2020/08/04 Javascript
Python中pip安装非PyPI官网第三方库的方法
2015/06/02 Python
python设计模式大全
2016/06/27 Python
python实现接口并发测试脚本
2019/06/25 Python
浅析Python与Mongodb数据库之间的操作方法
2019/07/01 Python
django-初始配置(纯手写)详解
2019/07/30 Python
pytorch 状态字典:state_dict使用详解
2020/01/17 Python
企划主管岗位职责
2013/12/12 职场文书
迟到检讨书300字
2014/02/14 职场文书
预备党员表决心书
2014/03/11 职场文书
项目委托协议书(最新)
2014/09/13 职场文书
2014学习优秀共产党员先进事迹材料思想汇报
2014/09/14 职场文书
部门2014年度工作总结
2014/11/12 职场文书
2014年招商引资工作总结
2014/11/22 职场文书
世界卫生日宣传活动总结
2015/02/09 职场文书
航班延误投诉信
2015/07/02 职场文书
如何利用golang运用mysql数据库
2022/03/13 Golang