在Flask使用TensorFlow的几个常见错误及解决

 更新时间:2024年01月12日 09:11:13   作者:渣渣的夏天  
这篇文章主要介绍了在Flask使用TensorFlow的几个常见错误及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

在Flask使用TensorFlow的几个常见错误

常见错误一

1. ValueError: Tensor Tensor(“dense_1/Sigmoid:0”, shape=(?, 1), dtype=float32) is not an element of this graph.

在Flask中使用tensorflow的model,一在界面中调用 model.predict() 就报下面这个错误,不过在单独的 .py 文件中使用却不报错。

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

这个bug真的很是纠心,网上一般说是添加如下代码

import tensorflow as tf
graph = tf.get_default_graph()
model = models.load_model(…………)

# 使用处添加:
global graph
global model
with graph.as_default():
    model.predict()
    # 执行预测函数

但是我当时测试时又报了另一个bug,但是这个bug也不好解决,试了很多方法也没解决,当然最终还是可以解决的,具体解决方式参考第三点。

tensorflow.python.framework.errors_impl.FailedPreconditionError: Error while reading resource variable dense_1/bias from Container: localhost. This could mean that the variable was uninitialized. Not found: Resource localhost/dense_1/bias/class tensorflow::Var does not exist.
     [[{{node dense_1/BiasAdd/ReadVariableOp}}]]

后来经过N遍测试后找到了以下两种解决方式,仅供参考:

解决方法一:

在调用前加载model和graph,但是这样会导致程序每次调用都需要重新加载model,然后运行速度就会很慢,不过这种修改方式是最简单的。

    graph = tf.get_default_graph()
    model = models.load_model('./static/my_model2.h5')
    with graph.as_default():
        result = model.predict(tokens_pad)

解决方法二:

在创建model后,先使用一遍 model.predict(),参数的大小和真实大小一致,这个是真正解决之道,同时不影响使用速率。

# 使用前:
model = models.load_model('./static/my_model2.h5')
# a 矩阵大小和 tokens_pad 一致
a = np.ones((1, 220))
model.predict(a)

# 使用时:
global model
result = model.predict(tokens_pad)

但是在使用后又遇到了 The Session graph is empty…… 的错误即第二点,不过估摸着这个是个例,应该是程序问题。

常见错误二

2. RuntimeError: The Session graph is empty. Add operations to the graph before calling run().

在相关代码使用前添加graph即可。

    graph = tf.get_default_graph()
    with graph.as_default():
        # 相关代码
        # 本次测试中是需要把调用包含model.predict()方法的方法的代码放到这里

常见错误三

3. tensorflow.python.framework.errors_impl.FailedPreconditionError: Error while reading resource variable dense_1/bias from Container: localhost. This could mean that the variable was uninitialized. Not found: Resource localhost/dense_1/bias/class tensorflow::Var does not exist.[[{{node dense_1/BiasAdd/ReadVariableOp}}]]

这个错误呢,也是TensorFlow和Flask结合使用时的常见错误

解决方式

如下:

from tensorflow.python.keras.backend import set_session
# 程序开始时声明
sess = tf.Session()
graph = tf.get_default_graph()

# 在model加载前添加set_session
set_session(sess)
model = models.load_model(…………)

# 每次使用有关TensorFlow的请求时
# in each request (i.e. in each thread):
global sess
global graph
with graph.as_default():
    set_session(sess)
    model.predict(...)

总结

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

相关文章

  • python编程学习使用管道Pipe编写优化代码

    python编程学习使用管道Pipe编写优化代码

    大家好,今天这篇文章我将详细讲解 Pipe 如何让你的代码更加简洁的方法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-11-11
  • 使用Python对EXCEL数据的预处理

    使用Python对EXCEL数据的预处理

    这篇文章主要介绍了使用Python处理EXCEL基础操作篇2,如何使用Python对EXCEL数据的预处理,文中提供了解决思路和部分实现代码,一起来看看吧
    2023-03-03
  • pycharm实现增加运行时内存

    pycharm实现增加运行时内存

    这篇文章主要介绍了pycharm实现增加运行时内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Linux下使用python自动修改本机网关代码分享

    Linux下使用python自动修改本机网关代码分享

    这篇文章主要介绍了Linux下使用python自动修改本机网关代码分享,本文直接给出实现代码,需要的朋友可以参考下
    2015-05-05
  • 基于Python实现图片批量加水印的方法

    基于Python实现图片批量加水印的方法

    我们经常有有这样的经历:辛辛苦苦制作的原创图片、精心拍摄的作品、耗费心血设计的宣传图,刚发布到网上,没过多久,就发现被别人盗用维 权耗时耗力,让人沮丧,今天,我们将深入Python图片处理的世界,手把手教你如何基于Python实现图片批量加水印,需要的朋友可以参考下
    2025-11-11
  • PyautoGui常用教程(一篇掌握)

    PyautoGui常用教程(一篇掌握)

    这篇文章主要介绍了PyautoGui常用教程(一篇掌握),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Python中列表,元组,字典和集合的区别及它们之间的转换

    Python中列表,元组,字典和集合的区别及它们之间的转换

    这篇文章主要介绍了Python中列表,元组,字典和集合的区别及它们之间的转换方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Python如何提取公共模块并避免代码重复

    Python如何提取公共模块并避免代码重复

    模块化编程是提高代码重用性和可维护性的关键,这篇文章小编就来为大家详细介绍一下Python如何提取公共模块并避免代码重复,希望对大家有所帮助
    2025-02-02
  • python之virtualenv的简单使用方法(必看篇)

    python之virtualenv的简单使用方法(必看篇)

    下面小编就为大家分享一python之virtualenv的简单使用方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-11-11
  • 编写Python脚本来实现最简单的FTP下载的教程

    编写Python脚本来实现最简单的FTP下载的教程

    这篇文章主要介绍了编写Python脚本来实现最简单的FTP下载的教程,主要用到了ftplib模块,无图形界面...需要的朋友可以参考下
    2015-05-05

最新评论