1

はので、ここで私のsolver.prototxtです:CaffeではSolamをAdamに設定できませんか?

net: "models/dcnf-fcsp-alexnet/train_val.prototxt" 
#test_iter: 1000 
#test_interval: 1000 
test_initialization: false 
base_lr: 0.0001 
lr_policy: "step" 
gamma: 0.01 
stepsize: 50000 
display: 20 
max_iter: 1000000 
momentum: 0.9 
weight_decay: 0.0005 
snapshot: 10000 
snapshot_prefix: "/data/lesi/dcnf-fcsp-alexnet/" 
type: "Adam" 
solver_mode: GPU 

それをクリアリーがアダムにタイプを設定しshoud。私はこれでトレーニングを実行すると、まだソルバー私の上司は、(それがsdg_solver.cppを言うので)それはSGDを使用しているように見えることを指摘した:

I0728 16:18:59.490665 27998 sgd_solver.cpp:106] Iteration 41860, lr = 0.0001 
I0728 16:19:26.414223 27998 solver.cpp:228] Iteration 41880, loss = 1.45618 
I0728 16:19:26.414342 27998 solver.cpp:244]  Train net output #0: loss = 1.45618 (* 1 = 1.45618 loss) 
I0728 16:19:26.414355 27998 sgd_solver.cpp:106] Iteration 41880, lr = 0.0001 
I0728 16:19:53.348322 27998 solver.cpp:228] Iteration 41900, loss = 1.44106 
I0728 16:19:53.348362 27998 solver.cpp:244]  Train net output #0: loss = 1.44106 (* 1 = 1.44106 loss) 

が、これはほんの一部のコンソール出力の混乱や、私が実際にSGDを使用していますか?もしそうなら、どうしてそれがアダムに変わらないでしょうか?ここで他のステップが必要なのはわかりません...

答えて

1

"Adam"は「SGD」ソルバーの特別なケースです:ミニバイトを使用すると、各繰り返しは局所勾配の確率的推定値を与えます。異なるソルバータイプは、この確率的推定を使用して重みを更新する方法が異なります。各トレーニング可能パラメータの"Adam"ソルバー店が(「瞬間」)を意味するとstdためです - あなたの'solverstate''caffemodel'スナップショットで
見てあなたは'solverstate''caffemodel' 2倍のディスクスペースを取ることに気づくでしょう。プレーンな "SGD"ソルバを使用した場合、'caffemodel''solverstate'は同じファイルサイズになります。

+1

偉大な答え!ソルバステートのサイズは確かに倍です!ありがとう! – WeAllMakeMistakes

関連する問題