Flask與keras結合的幾個常見錯誤

2021-10-06 22:42:13 字數 2373 閱讀 7291

在flask中使用tensorflow的model,一在介面中呼叫 model.predict() 就報下面這個錯誤,不過在單獨的 .py 檔案中使用卻不報錯。

valueerror

: tensor tensor

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

新增如下**可以解決:

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.

[[}]]

後來經過n遍測試後找到了以下兩種解決方式,僅供參考:

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…… 的錯誤即第二點,不過估摸著這個是個例,應該是程式問題。

graph = tf.get_default_graph(

)with graph.as_default():

# 相關**

# 本次測試中是需要把呼叫包含model.predict()方法的方法的**放到這裡

這個錯誤呢,也是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(..

.)————————————————

設定一下xla_flags指向你的cuda安裝目錄即可

os.environ[

"xla_flags"]=

"--xla_gpu_cuda_data_dir=/usr/local/cuda-10.0"

keras與tensorboard結合使用

使用tensorboard將keras的訓練過程顯示出來 動態的 直觀的 是乙個絕好的主意,特別是在有架設好的vps的基礎上,這篇文章就是一起來實現這個過程。一 主要原理 keras的在訓練 fit 的過程中,顯式地生成log日誌 使用tf的tensorboard來解析這個log日誌,並且通過 的形...

flask 工廠模式與celery結合

簡單介紹一下celery celery 是乙個非同步任務佇列。你可以使用它在你的應用上下文之外執行任務。總的想法就是你的應用程式可能需要執行任何消耗資源的任務都可以交給任務佇列,讓你的應用程式自由和快速地響應客戶端請求。官方文件 中文文件 flask 中使用 celery 別人寫的,大家可以參考著來...

在Flask使用TensorFlow的幾個常見錯誤

在flask中使用tensorflow的model,一在介面中呼叫model.predict 就報下面這個錯誤,不過在單獨的.py檔案中使用卻不報錯。valueerror tensor tensor dense 1 sigmoid 0 shape 1 dtype float32 isnot an e...