這篇文章主要為大家展示了“如何解決Tensorflow內存泄露的問題”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何解決Tensorflow內存泄露的問題”這篇文章吧。
創(chuàng)新互聯(lián)主營麻山網站建設的網絡公司,主營網站建設方案,重慶APP開發(fā),麻山h5小程序設計搭建,麻山網站營銷推廣歡迎麻山等地區(qū)企業(yè)咨詢使用tensorflow進行編程時,經常遇到操作不當,帶來的內存泄露問題,這里有一個可以幫助debug問題所在方法:
https://stackoverflow.com/questions/51175837/tensorflow-runs-out-of-memory-while-computing-how-to-find-memory-leaks/51183870#51183870
使用tf.Graph.finalize()把運算圖變成只讀的,從而對圖的修改都會報錯,從而找到內存泄露的定點。
目前我出現(xiàn)過內存泄露問題的有兩處:
1.
session和graph沒有釋放內存。按照資料的說法,使用了with關鍵字可以在session異常退出時也釋放內存,否則要用session.close()關閉session。代碼如下:
with tf.Session() as session: #codes #一般使用with以后就會釋放內存,否則運行如下釋放 session.close() del session
另一方面,我是在session中加載graph(訓練好的模型),導致每次關閉程序再運行,graph出現(xiàn)重復加載的現(xiàn)象。錯誤代碼示例:
with tf.Seesion() as session: # 在session內部加載保存好的graph saver = tf.train.import_meta_graph('./CNN_cracks.meta') saver.restore(session, "./CNN_cracks") # codes
此處,在一次運行session時會加載一次graph,一次運行的時候沒問題,但多次運行(調試時),每次graph都會加載到內存而不被釋放,因而造成內存泄露。
正確的做法如下:
# 用with新建一個graph,這樣在運行完以及異常退出時就會釋放內存 graph = tf.Gragh() with graph.as_default(): saver = tf.train.import_meta_graph('./CNN_cracks.meta') with tf.Session(graph=graph) as session: saver.restore(session, "./CNN_cracks")
2.
一些tensorflow的運算似乎也會修改圖,原因未明。所以在在訓練里面把所有屬于tensorflow的運算都寫進去,運行session.run返回的只能是只讀。
##錯誤代碼 #訓練 graph = tf.Graph() with graph.as_default(): #codes predict = tf.nn.softmax(model(data)) #預測,這里訓練文件與預測文件是分離的 with tf.Session(graph=graph) as session: #codes predict = session.run(predict, feed_dict={data: block}) prediction = tf.argmax(predict, -1) #這里會對圖進行修改
##正確代碼 #訓練 graph = tf.Graph() with graph.as_default(): #codes predict = tf.argmax(tf.nn.softmax(model(data)), -1) #預測 with tf.Session(graph=graph) as session: #codes prediction = session.run(predict, feed_dict={data: block})
以上是“如何解決Tensorflow內存泄露的問題”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)成都網站設計公司行業(yè)資訊頻道!
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
本文題目:如何解決Tensorflow內存泄露的問題-創(chuàng)新互聯(lián)
本文網址:http://aaarwkj.com/article16/hogdg.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站內鏈、企業(yè)建站、外貿網站建設、虛擬主機、關鍵詞優(yōu)化、服務器托管
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)