2017-10-23 13 views
0

他のデータベースでネットワークを事前にトレーニングしたとします。オーバーフィット問題のために、私のデータベースは非常に多様ではないので、オーバーフィット問題は非常に深刻です。チェーン化されたネットワークパラメータをチェーンャーv2.0にロードしますが、最初のいくつかのレイヤーを修正したいのですが、チェーンナーv2.0で何を使うべきか、chainer1.0にはvolatileキーワードがありますが、v2では廃止予定です.0。chainer v2.0の学習ネットワークでレイヤパラメータを修正するにはどうすればよいですか?

chainer.no_backprop_mode():の中でdef __call__を最初に使用する必要がありますか?

答えて

0

はい、転送計算コードでchainer.no_backprop_mode()コンテキストマネージャを使用すると、特定のレイヤのパラメータを修正できます。次に例を示します。

def __call__(self, x): 
    with chainer.no_backprop_mode(): 
     h1 = F.relu(self.l1(x)) 
    h2 = F.relu(self.l2(h1)) 
    return self.l3(h2) 
+0

私はチェイナ会社の人に尋ねた、と彼は言った:あなたは後でチェイナv2またはを使用している場合、あなたはどのとオプティマイザが更新されません、= false'のparam.update_rule.enabled '設定することができますパラメータ。 ?それは最善の解決策ですか? – machen

+0

'no_backprop_mode'は、バックプロップでレイヤーのグラディエント計算をスキップしますが、 –

+0

(上記のコメントは間違いです。無視してください)"バックプロップモードなし "は、グラデーション計算をスキップするだけで、' l1' 。 'll'を最適化するために使用したMomentumSGD(事前訓練用)を使用していて、オプティマイザの「状態」(この場合、過去の反復の累積勾配)を消去しなかった場合、このオプティマイザはたとえ勾配がゼロであってもfinetuning(またはステートレスなSGDを使用)のために新しい新しいオプティマイザを使用している場合、パラメータはno backproppモードで変更されません。 –

関連する問題