2017-08-25 627 views
0

當我通常從命令行運行python腳本時,例如python test.py,GPU內存將在腳本完成後立即釋放。 在這個test.py腳本中,我只是加載了keras構建的模型來評估和預測一些數據。沒有培訓過程。但是,如果我打開我的'spyder',並在'spyder'中運行此腳本,結果會出現在'ipython'部分,但是隨後我從命令行鍵入nvidia-smi,GPU內存不會釋放。 所以,我試過的是關閉這個'ipython'內核並開始一個新的。但是我所有其他的變數都會丟失。 'spyder'的model.evaluate(x, y)之後有沒有體面的方式釋放GPU內存? 下面是一些屏幕截圖: enter image description here如何在spyder中釋放ipython中的keras中的GPU資源?

之前和「Spyder的」腳本運行後: enter image description here

+0

嘗試運行'gc.collect()' – DJK

+0

@ djk47463,這個'gc'來自哪裏?哪個模塊? – StayFoolish

+0

該模塊被命名爲[gc](https://docs.python.org/2/library/gc.html),它是一個垃圾收集器,我相信它附帶的Python安裝 – DJK

回答

1

通常情況下,tensorflow後端將保留在GPU上的所有內存。它可能不會真正使用所有的內存,但是它會被其他程序佔用,直到tensorflow後端被終止。因此,在nvidia-smi中,您將看到內存不會釋放,甚至tensorflow已經釋放了其框架中的前一個內存。

+0

,所以我怎麼能釋放記憶呢?因爲我從ipython運行了一些測試命令,並且還從命令行運行了一些其他腳本。但是如果tensorflow後端不釋放內存,那麼我不能從命令行運行其他腳本。有什麼建議麼? – StayFoolish

+0

是的,你可以限制張量記憶。請檢查[此鏈接](https://github.com/fchollet/keras/issues/1538) – Van