概要 chainerのmodel(Chainクラス)を入れ子にして使っていたら重みが更新されなかった. Chainクラスで重みの更新がされるのは self.init_scope()内に書いている linkオブジェクトだけだったことが判明し, with self.init_scope():以下に書くとちゃんと更新された. 状況 version chainer==3.0.0 やりたかったこと あるmodelAに layerNを追加して,新たに modelBを作成したかった. だめなコード 計算グラフを出力すると,ちゃんとmodelA -> layerN という風に接続されていたので,これでうまく接続されているものだと思っていた. が,実際に学習中に都度重みを出力してみると,modelA内の重み(l1, l2, l3の重み)が全く更新されていないことがわかった. # example/train_