2017-02-01 4 views
0

私はCaffeでニューラルネットワークアーキテクチャを実装したいと思います。これは、繰り返し可能な変数に基づいて異なる動作をします。たとえば、完全なネットワークでは、5回のトレーニングまたはテストの反復のうち4回に10のレイヤーを使用できますが、他のすべての反復ではネットワークを切り捨て、最後の5つのレイヤーのみを使用します。これは、第1層への入力と第5層への入力がもちろん同じ次元を有することを必要とするが、私の主な問題は、トレーニング/テスト中に2つのアーキテクチャ間でこの切り替えをどのように実施するかである。静的でないCaffeネットワークアーキテクチャを作成するにはどうすればいいですか?

答えて

1

は、私はあなたがpycaffeとcaffe.NetSpec()を使用していることを行うことができますね、しかし、これは非常に素晴らしいコード...一方
、なぜあなたはi反復の完全なネットのために訓練していないことするつもりはない、保存スナップショットを作成し、保存したスナップショットで縮小モデルを「ウォームスタート」しますか?
'full_trainval.prototxt'とは、i回の反復で完全なネットを訓練するように構成され、'top_trainval.prototxt'は、'top_solver.prototxt'であり、ネットの最上位層のみを訓練するように構成されています。この段階は、あなたが最終sanpshotが保存されていることを確認してください、を介して行われ、その後、

~$ $CAFFE_ROOT/build/tools/caffe train -solver top_solver.prototxt -snapshot full_train_last_snapshot.solverstate 

ときに

~$ $CAFFE_ROOT/build/tools/caffe train -solver full_solver.prototxt 

最後に、あなたは、単一の完全に二相の重みをマージするnet_surgeryを使用することができますネット。

関連する問題