欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在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,一在界面中調(diào)用 model.predict() 就報下面這個錯誤,不過在單獨的 .py 文件中使用卻不報錯。

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

這個bug真的很是糾心,網(wǎng)上一般說是添加如下代碼

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

# 使用處添加:
global graph
global model
with graph.as_default():
    model.predict()
    # 執(zhí)行預測函數(shù)

但是我當時測試時又報了另一個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}}]]

后來經(jīng)過N遍測試后找到了以下兩種解決方式,僅供參考:

解決方法一:

在調(diào)用前加載model和graph,但是這樣會導致程序每次調(diào)用都需要重新加載model,然后運行速度就會很慢,不過這種修改方式是最簡單的。

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

解決方法二:

在創(chuàng)建model后,先使用一遍 model.predict(),參數(shù)的大小和真實大小一致,這個是真正解決之道,同時不影響使用速率。

# 使用前:
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…… 的錯誤即第二點,不過估摸著這個是個例,應(yīng)該是程序問題。

常見錯誤二

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

在相關(guān)代碼使用前添加graph即可。

    graph = tf.get_default_graph()
    with graph.as_default():
        # 相關(guān)代碼
        # 本次測試中是需要把調(diào)用包含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結(jié)合使用時的常見錯誤

解決方式

如下:

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(…………)

# 每次使用有關(guān)TensorFlow的請求時
# in each request (i.e. in each thread):
global sess
global graph
with graph.as_default():
    set_session(sess)
    model.predict(...)

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論