Python/Numpyを使用して、CPUからTensorFlowを使用して単純な畳み込みニューラルネットワークを実行し、ディスクからデータをロードして準備します。 Python/Numpyの部分はわずか32個の1MBイメージを読み込んでいるので、予想どおりメモリをほとんど消費しません。メモリ効率的なTensorFlow用の設計トリックN
ただし、実行中のsess.run(AdamOptimizer)
メモリ使用量は天文学的にピークに達します。memory_profilerの出力では、4トレーニングサイクルと1テストサイクルを示しています。
12GBのピークは、バッチのサイズ、トレーニングネットワークの数、または自分のレイヤーのサイズを制限します。このピークは、sess.run(accuracy)
ステートメントに等価に存在するため、このピークはPythonからTFへのデータ転送またはフォワードアクティベーションでのデータ転送と関係があります。
おそらくCNNグラフをうまく設計できませんでしたか?誰かが、私は特にメモリのために留意すべきデザインルールを指摘できますか?これを時間どおりに塗りつぶすことは可能ですか? - 12GBのピークに2倍の時間がかかり、半分の時間がかかる場合は改善されます。最後に、ピークの開始時間と終了時間を通知する方法があるため、複数のネットワークを管理してインターレースを訓練することができますか? (約2秒の狭いピークは、sess.run()
の文で約20秒かかることに注意してください)