91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解決TensorFlow訓練內存不斷增長,進程被殺死的問題

發布時間:2021-07-13 13:57:53 來源:億速云 閱讀:291 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“如何解決TensorFlow訓練內存不斷增長,進程被殺死的問題”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何解決TensorFlow訓練內存不斷增長,進程被殺死的問題”這篇文章吧。

TensorFlow訓練時,遇到內存不斷增長,最終導致內存不足,進程被殺死。

在這里我不準備對造成這一現象的所有原因進行探討,只是記錄一下我在項目中遇到的這一問題,下面將對我遇到的內存不斷增長的原因進行分析。

在TensorFlow中構造圖,是將一些op作為節點加入圖中,在run之前,是需要構造好一個圖的,所以在run的時候,如果run圖中不存在的節點,TensorFlow就會將節點加入圖中,隨著不斷的迭代,造成內存不斷的增長,從而導致內存不足。

下面舉一個很容易發現這個問題的例子:

import tensorflow as tf
x = tf.Variable(tf.constant(1))
y = tf.constant(2)
sess = tf.Session()
sess.run(tf.global_variables_initializer())
while True:
 print(sess.run(x+y))

在上面的例子中,x,y是圖中的兩個節點,在while循環中run(x)或者run(y)都是不存在問題的,但是上例中我們使用的時run(x+y),而在TensorFlow的圖中是不存在x+y這個節點的,所以在run的時候,圖中會不斷的創建該節點,最終導致了內存不足。這個例子很容易理解,這樣的問題也很容易發現。

下面,將舉一個不是那么容易發現的問題:

import tensorflow as tf
test = tf.get_variable('test', shape=[4, 1], initializer=tf.random_normal_initializer(stddev=0.1))
init_op = tf.global_variables_initializer()
with tf.Session() as sess:
 sess.run(init_op)
 print(sess.run(test[0]))

這個例子是創建一個shape為[4,1]的變量對象,test為圖中的一個節點,但是在我們實際使用時,我們可能并不需要test里的所有數據,加入只需要一個數據test[0],當我們使用run(test[0])時,test[0]并不是圖中的節點,該節點就會在圖中創建。上面的例子并沒有使用循環,所以增加了節點,但是也不會造成內存的不足,當使用了循環時,就需要注意了。

解決辦法:run圖中存在的節點,對返回的結果進行處理,得到想要的結果,不要在run里面對節點處理(處理后的節點可能不是圖中的節點)。

以上是“如何解決TensorFlow訓練內存不斷增長,進程被殺死的問題”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

海晏县| 远安县| 合肥市| 肃北| 湖南省| 老河口市| 陵川县| 远安县| 高雄市| 光山县| 珲春市| 洞头县| 德钦县| 滦平县| 米脂县| 普陀区| 武冈市| 蓬溪县| 丘北县| 新宾| 时尚| 广昌县| 罗山县| 灌阳县| 古丈县| 临颍县| 牙克石市| 九江市| 连城县| 乐平市| 河南省| 嫩江县| 宣化县| 望谟县| 吉水县| 巴林右旗| 青龙| 贵州省| 武城县| 石泉县| 依兰县|