亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在循環中構建圖時,Tensorflow 內存泄漏

在循環中構建圖時,Tensorflow 內存泄漏

手掌心 2021-09-11 10:03:04
當我選擇 Tensorflow(1.12.0 版)模型的超參數的網格搜索由于內存消耗激增而崩潰時,我注意到了這一點。請注意,與此處類似的問題不同,我確實關閉了圖形和會話(使用上下文管理器),并且我沒有向循環中的圖形添加節點。我懷疑 tensorflow 可能維護了在迭代之間不會被清除的全局變量,所以我在迭代之前和之后調用了 globals() 但在每次迭代之前和之后沒有觀察到全局變量集的任何差異。我做了一個重現問題的小例子。我在循環中訓練一個簡單的 MNIST 分類器并繪制該過程消耗的內存:import matplotlib.pyplot as pltimport osos.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'import psutilimport tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_dataprocess = psutil.Process(os.getpid())N_REPS = 100N_ITER = 10mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)x_test, y_test = mnist.test.images, mnist.test.labels# Runs experiment several times.mem = []for i in range(N_REPS):    with tf.Graph().as_default():        net = tf.contrib.layers.fully_connected(x_test, 200)        logits = tf.contrib.layers.fully_connected(net, 10, activation_fn=None)        loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y_test, logits=logits))        train_op = tf.train.AdamOptimizer(learning_rate=0.0001).minimize(loss)        init = tf.global_variables_initializer()        with tf.Session() as sess:            # training loop.            sess.run(init)            for _ in range(N_ITER):                sess.run(train_op)    mem.append(process.memory_info().rss)plt.plot(range(N_REPS), mem)結果圖如下所示:在我的實際項目中,進程內存從幾百 MB 開始(取決于數據集大?。钡轿业南到y內存不足為止增加到 64 GB。我嘗試了一些減緩增長的方法,例如使用占位符和 feed_dicts 而不是依賴 convert_to_tensor。但持續的增長仍在那里,只是變慢了。
查看完整描述

2 回答

?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

嘗試在會話中進行循環。不要為每次迭代創建圖形和會話。每次創建圖形并初始化變量時,您不是重新定義舊圖形,而是創建導致內存泄漏的新圖形。我遇到了類似的問題,并且能夠通過在會話中進行循環來解決這個問題。

從如何不編程 Tensorflow

  • 在創建操作時要注意,并且只創建您需要的操作。盡量保持運算創建不同的運算執行。

  • 特別是如果您只是使用默認圖形并在常規 REPL 或筆記本中交互運行,則最終可能會在圖形中出現大量廢棄的操作。每次重新運行定義任何圖形操作的筆記本單元時,您不僅僅是在重新定義操作,而是在創建新操作。


查看完整回答
反對 回復 2021-09-11
  • 2 回答
  • 0 關注
  • 143 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號