2017-07-29 12 views
2

最初に、私はcaffeフレームワークの1つの畳み込みニューラルネットワークを訓練しました。モデルの体重は80Mbです。しかし、私はそれを私のプロジェクトにロードした後、それには約1GbのRAMが必要であることに気付きました。インターネット上で私はCNNが多くのメモリを必要とすることを知りました。だから私は、小さなCNNが私の問題を解決すると思ったのです。私はそれに層が少ない別のものを訓練しました。最終的に、モデルは60Mbしか加重されませんでしたが、前の1GbのRAMメモリを引き続き使用しました。小さなニューラルネットと大きなロードニューラルネットが同じ量のRAMを使用するのはなぜですか?

あなたは私の質問に答える前に、ことに注意してください。

1)私が撮影したメモリーの量を測定したとき、私は私のプロジェクトのすべての行と残りの唯一のことをコメントしているが、ロードされたモデルでした。

2)私は、端末コマンド「ホテルトップ」を使用して撮影したメモリーの量(はい、​​彼らは同じである)

P.S.をチェックしています私はDNNに新しいです、他の解決策はありますか?ご協力ありがとうございました!

UPDATE

私は(ジャスト実験のために)1つの隠れ層でネットを作成し、私のプロジェクトにそれをロードしています。アカウントにとって、モデルの重量はわずか160Kbで、RAMメモリは1Gbですが、私は確かにCaffeモデルをプロジェクトに読み込む方法を理解していません。私はcaffeライブラリを使用して、クラス 'classifier'でモデルを読み込みます。再度、あなたの助けに感謝します!

答えて

0

あなたのプロセスがRAMで取るサイズはネットのサイズに依存しません。他に何かがあるはずです。あなたが興味を持っているのであれば、メモリプロファイリングツールがあり、メモリがどこになくなったのかを報告することができます。

+0

ありがとうございます!ええ、私はそれを理解しています。私が言ったように私は "Classifierクラシファイア(model_file、trained_file、mean_file、label_file);"これらのクラスは私のRAMを取る。どのようにしてこの問題を解決できるか考えていますか? –

+0

メモリプロファイリングツールを使用します。それは記憶を取るものを示すでしょうが、おそらくあなたはソースからカフェを構築する必要があります。 – arrowd

+0

ああ、申し訳ありませんが、私はあなたの最初の答えを得ていませんでした。私はプロファイリングツールを忘れていました。私はそれを試み、出力を書きます。もう一度、ありがとう! –

関連する問題