2017-08-25 27 views
0

通常、コマンドラインからPythonスクリプト(たとえばpython test.py)を実行すると、GPUメモリはスクリプトの終了直後に解放されます。 このtest.pyスクリプトでは、ケラスのモデルを読み込んで、一部のデータを評価し予測するだけでした。そこにトレーニングプロセスはありません。 しかし、「spyder」を開いてこのスクリプトを「spyder」で実行すると、結果は「ipython」セクションに表示されますが、コマンドラインからnvidia-smiと入力すると、GPUメモリは解放されません。 私が試したのは、この 'ipython'カーネルを閉じて新しいものを起動することです。しかし、他のすべての変数は失われます。 model.evaluate(x, y)の後にGPUメモリを「spyder」から解放するためのまともな方法がありますか? enter image description hereipythonのkerasでGPUリソ​​ースをspyderで解放するには?

前と「スパイダー」からスクリプトを実行した後:バックエンドがGPU上のすべてのメモリを予約しますtensorflow enter image description here

+0

'gc.collect()' – DJK

+0

@ djk47463を実行しようとします。この 'gc'はどこから来ますか? Whichiモジュール? – StayFoolish

+0

モジュールの名前は[gc](https://docs.python.org/2/library/gc.html)です。これはガベージコレクタです。これはPythonのインストール – DJK

答えて

1

通常、ここで は、いくつかのスクリーンショットです。実際にはすべてのメモリを使用しているわけではありませんが、テンソルフローのバックエンドが終了するまで、他のプログラムで使用されていない状態になっています。したがって、nvidia-smiでは、テンソルフローがそのフレームワーク内の前のメモリを解放したとしても、メモリは解放されないことがわかります。

+0

に付属していると思いますメモリ?私はipythonからいくつかのテストコマンドを実行し、コマンドラインからいくつかの他のスクリプトを実行するためです。しかし、テンソルフローのバックエンドがメモリを解放しない場合、コマンドラインから他のスクリプトを実行することはできません。助言がありますか? – StayFoolish

+0

ええ、テンソルフローのメモリを制限することができます。 [このリンク](https://github.com/fchollet/keras/issues/1538)にチェックを入れてください。 – Van