解决keras+flask模型的重复调用出错ValueError: Tensor is not an element of this graph

 更新时间:2024年01月12日 08:48:56   作者:七彩吞天蟒  
这篇文章主要介绍了解决keras+flask模型的重复调用出错ValueError: Tensor is not an element of this graph问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

确认基调:这个问题不是大问题,看完本篇文章就能解决

1. 错误重现

ValueError: Tensor Tensor("dense_3/BiasAdd:0", shape=(?, 1), dtype=float32) is not an element of this graph.

2. 错误含义

表面含义:传入的张量[tensor]并不是这个图[graph]的元素。具体意义:就是说,当你进行模型预测的时候,传入的数据,和后台的图不匹配。

3. 解决方法

方法一

把keras的tensorflow的后端换成theano,具体操作不赘述

这个方法不推荐,因为并没有实际解决问题,而是逃避问题,而且有可能会出现一些新的问题。【嗯,我就出现了】

方法二

选择每次调用模型的时候,重新加载一下模型,也就是说把加载模型写在调用的函数里,这样模型就是个局部变量,每次调用每次加载。【如果还是报错】

那记得在模型预测结果后,在其代码追加一句:

ret = model.predict(x_test)
keras.backend.clear_session()

意思就是清理下session,这样每次调用都会加载一下模型,并且清除session

这个方法也不推荐,加载模型耗时耗力,而且清除了其他的session,有可能造成其他程序的崩溃

方法三

创建全局的model,创建全局的graph,调用的时候直接引用过来

像这样:

if __name__ == '__main__':
	graph = tf.get_default_graph()
	model = keras.models.load_model('./data/model/model.model')
	app.run(host='0.0.0.0', port=9090, debug=True)

但是这不算结束,关键的地方来了,在调用模型的时候,要引用一下全局的图才行

像这样:

with graph.as_default():
	prd = model.predict(x_test)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python 实现目录复制的三种小结

    python 实现目录复制的三种小结

    今天小编就为大家分享一篇python 实现目录复制的三种小结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python用input输入列表的实例代码

    Python用input输入列表的实例代码

    在本篇文章里小编给大家整理的是关于Python用input输入列表的实例代码,需要的朋友们可以参考下。
    2020-02-02
  • 浅谈python扩展包安装失败解决方案

    浅谈python扩展包安装失败解决方案

    Python包安装失败最主要原因是默认安装源为国外服务器,安装速度慢,但是在使用python扩展包安装失败,本文就来介绍一下,感兴趣的可以了解一下
    2023-09-09
  • Python基础之语法错误和异常详解

    Python基础之语法错误和异常详解

    Python有两种错误很容易辨认:语法错误和异常.本文就给大家详细介绍一下Python错误和异常,对正在学习python的小伙伴们很有帮助哦,需要的朋友可以参考下
    2021-05-05
  • Python 文本文件内容批量抽取实例

    Python 文本文件内容批量抽取实例

    今天小编就为大家分享一篇Python 文本文件内容批量抽取实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • python如何创建TCP服务端和客户端

    python如何创建TCP服务端和客户端

    这篇文章主要为大家详细介绍了python如何创建TCP服务端和客户端,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Python中values()函数用法简单示例

    Python中values()函数用法简单示例

    这篇文章主要给大家介绍了关于Python中values()函数用法的相关资料,python内置的values()函数返回一个字典中所有的值,文中给出了代码示例,需要的朋友可以参考下
    2023-09-09
  • Python自定义装饰器原理与用法实例分析

    Python自定义装饰器原理与用法实例分析

    这篇文章主要介绍了Python自定义装饰器原理与用法,结合实例形式较为详细的分析了Python自定义装饰器,带参数的装饰器等概念、原理、实现方法及相关使用技巧,需要的朋友可以参考下
    2018-07-07
  • 在linux系统中安装python3.8.1 并卸载 python3.6.2 更新python3引导到3.8.1的详细步骤

    在linux系统中安装python3.8.1 并卸载 python3.6.2 更新python3引导到3.8.1的

    这篇文章主要介绍了如何在linux系统中安装python3.8.1 并卸载 python3.6.2 更新python3引导到3.8.1,本文分步骤给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-11-11
  • matplotlib实现数据实时刷新的示例代码

    matplotlib实现数据实时刷新的示例代码

    这篇文章主要介绍了matplotlib实现数据实时刷新的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01

最新评论