解決keras+flask模型的重復(fù)調(diào)用出錯(cuò)ValueError: Tensor is not an element of this graph
確認(rèn)基調(diào):這個(gè)問(wèn)題不是大問(wèn)題,看完本篇文章就能解決
1. 錯(cuò)誤重現(xiàn)
ValueError: Tensor Tensor("dense_3/BiasAdd:0", shape=(?, 1), dtype=float32) is not an element of this graph.
2. 錯(cuò)誤含義
表面含義:傳入的張量[tensor]并不是這個(gè)圖[graph]的元素。具體意義:就是說(shuō),當(dāng)你進(jìn)行模型預(yù)測(cè)的時(shí)候,傳入的數(shù)據(jù),和后臺(tái)的圖不匹配。
3. 解決方法
方法一
把keras的tensorflow的后端換成theano,具體操作不贅述
這個(gè)方法不推薦,因?yàn)椴](méi)有實(shí)際解決問(wèn)題,而是逃避問(wèn)題,而且有可能會(huì)出現(xiàn)一些新的問(wèn)題?!距牛揖统霈F(xiàn)了】
方法二
選擇每次調(diào)用模型的時(shí)候,重新加載一下模型,也就是說(shuō)把加載模型寫(xiě)在調(diào)用的函數(shù)里,這樣模型就是個(gè)局部變量,每次調(diào)用每次加載。【如果還是報(bào)錯(cuò)】
那記得在模型預(yù)測(cè)結(jié)果后,在其代碼追加一句:
ret = model.predict(x_test) keras.backend.clear_session()
意思就是清理下session,這樣每次調(diào)用都會(huì)加載一下模型,并且清除session
這個(gè)方法也不推薦,加載模型耗時(shí)耗力,而且清除了其他的session,有可能造成其他程序的崩潰
方法三
創(chuàng)建全局的model,創(chuàng)建全局的graph,調(diào)用的時(shí)候直接引用過(guò)來(lái)
像這樣:
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)
但是這不算結(jié)束,關(guān)鍵的地方來(lái)了,在調(diào)用模型的時(shí)候,要引用一下全局的圖才行
像這樣:
with graph.as_default(): prd = model.predict(x_test)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python 實(shí)現(xiàn)目錄復(fù)制的三種小結(jié)
今天小編就為大家分享一篇python 實(shí)現(xiàn)目錄復(fù)制的三種小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12Python基礎(chǔ)之語(yǔ)法錯(cuò)誤和異常詳解
Python有兩種錯(cuò)誤很容易辨認(rèn):語(yǔ)法錯(cuò)誤和異常.本文就給大家詳細(xì)介紹一下Python錯(cuò)誤和異常,對(duì)正在學(xué)習(xí)python的小伙伴們很有幫助哦,需要的朋友可以參考下2021-05-05python如何創(chuàng)建TCP服務(wù)端和客戶端
這篇文章主要為大家詳細(xì)介紹了python如何創(chuàng)建TCP服務(wù)端和客戶端,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08Python中values()函數(shù)用法簡(jiǎn)單示例
這篇文章主要給大家介紹了關(guān)于Python中values()函數(shù)用法的相關(guān)資料,python內(nèi)置的values()函數(shù)返回一個(gè)字典中所有的值,文中給出了代碼示例,需要的朋友可以參考下2023-09-09在linux系統(tǒng)中安裝python3.8.1?并卸載?python3.6.2?更新python3引導(dǎo)到3.8.1的
這篇文章主要介紹了如何在linux系統(tǒng)中安裝python3.8.1?并卸載?python3.6.2?更新python3引導(dǎo)到3.8.1,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-11-11matplotlib實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)刷新的示例代碼
這篇文章主要介紹了matplotlib實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)刷新的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01