国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

解決Tensorflow 內存泄露問題

2020-02-15 21:24:05
字體:
來源:轉載
供稿:網友

使用tensorflow進行編程時,經常遇到操作不當,帶來的內存泄露問題,這里有一個可以幫助debug問題所在方法:

https://stackoverflow.com/questions/51175837/tensorflow-runs-out-of-memory-while-computing-how-to-find-memory-leaks/51183870#51183870

使用tf.Graph.finalize()把運算圖變成只讀的,從而對圖的修改都會報錯,從而找到內存泄露的定點。

目前我出現過內存泄露問題的有兩處:

1.

session和graph沒有釋放內存。按照資料的說法,使用了with關鍵字可以在session異常退出時也釋放內存,否則要用session.close()關閉session。代碼如下:

with tf.Session() as session:  #codes#一般使用with以后就會釋放內存,否則運行如下釋放session.close()del session

另一方面,我是在session中加載graph(訓練好的模型),導致每次關閉程序再運行,graph出現重復加載的現象。錯誤代碼示例:

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 內存泄露問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 渝中区| 博野县| 文水县| 高台县| 永新县| 太康县| 禹城市| 孙吴县| 阜宁县| 壶关县| 突泉县| 湄潭县| 视频| 大荔县| 信宜市| 合江县| 东乌珠穆沁旗| 乌鲁木齐市| 彰化县| 三门峡市| 霍林郭勒市| 巩留县| 岑溪市| 孟村| 宁津县| 宝兴县| 墨江| 额济纳旗| 宿州市| 远安县| 宝丰县| 光泽县| 无棣县| 漳浦县| 和林格尔县| 克什克腾旗| 杨浦区| 泽库县| 闽侯县| 汉源县| 彰化市|