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返回真假值(True or False)小技巧
Apr 10 Python
详解Python的单元测试
Apr 28 Python
Python基于多线程操作数据库相关问题分析
Jul 11 Python
python微元法计算函数曲线长度的方法
Nov 08 Python
详解爬虫被封的问题
Apr 23 Python
使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)
May 28 Python
在python中实现调用可执行文件.exe的3种方法
Jul 07 Python
python3中pip3安装出错,找不到SSL的解决方式
Dec 12 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
Dec 31 Python
Python insert() / append() 用法 Leetcode实战演示
Mar 31 Python
python实现ROA算子边缘检测算法
Apr 05 Python
python 算法题——快乐数的多种解法
May 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
哪吒敖丙传:新人物二哥敖乙出场 小敖丙奶气十足
2020/03/08 国漫
php多文件上传功能实现原理及代码
2013/04/18 PHP
async和DOM Script文件加载比较
2014/07/20 PHP
PHP标准类(stdclass)用法示例
2016/09/28 PHP
laravel项目利用twemproxy部署redis集群的完整步骤
2018/05/11 PHP
php基于Redis消息队列实现的消息推送的方法
2018/11/28 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
2019/10/09 PHP
基础的prototype.js常用函数及其用法
2007/03/10 Javascript
jquery 选取方法都有哪些
2014/05/18 Javascript
JavaScript知识点总结之如何提高性能
2016/01/15 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
2017/09/18 Javascript
微信小程序 页面跳转事件绑定的实例详解
2017/09/20 Javascript
bootstrap datetimepicker控件位置异常的解决方法
2017/11/23 Javascript
使用node打造自己的命令行工具方法教程
2018/03/26 Javascript
electron实现qq快捷登录的方法示例
2018/10/22 Javascript
JS字符串与二进制的相互转化实例代码详解
2019/06/28 Javascript
javascript canvas实现简易时钟例子
2020/09/05 Javascript
Python中str.format()详解
2017/03/12 Python
基于python实现简单日历
2018/07/28 Python
Python logging模块用法示例
2018/08/28 Python
python 找出list中最大或者最小几个数的索引方法
2018/10/30 Python
对Python random模块打乱数组顺序的实例讲解
2018/11/08 Python
Python实现图像的垂直投影示例
2020/01/17 Python
Python使用plt.boxplot() 参数绘制箱线图
2020/06/04 Python
Nili Lotan官网:Nili Lotan同名品牌
2018/01/07 全球购物
搬家公司的创业计划书
2014/01/01 职场文书
工业学校毕业生自荐信范文
2014/01/03 职场文书
校长就职演讲稿
2014/01/06 职场文书
大二学期个人自我评价
2014/01/13 职场文书
十佳青年事迹材料
2014/08/21 职场文书
2014年重阳节老干部座谈会上的讲话稿
2014/09/25 职场文书
2014年城管个人工作总结
2014/12/08 职场文书
大四学生个人总结
2015/02/15 职场文书
五四青年节比赛演讲稿
2015/03/18 职场文书
小学班级口号大全
2015/12/25 职场文书
《作风建设永远在路上》心得体会
2016/01/21 职场文书