2017-10-23 14 views
0

다른 데이터베이스에서 네트워크를 미리 훈련했다고 가정합니다. 오버 피팅 (overfitting) 문제로 인해 데이터베이스가 다양성이 많지 않으므로 초과 적용 문제는 매우 심각합니다. 내가 chainer v2.0에 pretrained 네트워크 매개 변수를로드하려면이 경우, 내가 chainer2.0에서 사용해야합니다, 내가 chainer1.0 알고 휘발성 키워드이지만 v2에서 deprecated 먼저 여러 레이어를 수정하려면 .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

나는 chainer 회사 사람을 물어, 그는 말했다 : 나중에 Chainer V2 이상을 사용하는 경우가있는 최적화 프로그램이 업데이트되지 않습니다 = FALSE 'param.update_rule.enabled'설정할 수 있습니다 매개 변수 ? 가장 좋은 해결책은 무엇입니까? – machen

+0

'no_backprop_mode'는 백프로 프가 레이어에 대한 그라디언트 계산을 건너 뛰게하지만, –

+0

(위의 설명은 실수입니다. 무시하십시오) "백 프로프 모드가 없음"은 그라디언트 계산을 스킵하므로'l1'에 대한 그라디언트가 0이됩니다. . 예를 들어'l1'을 최적화하기 위해 사용 된 MomentumSGD (사전 학습)를 사용하고 있고 최적화 프로그램의 "상태"(이 경우 과거 반복의 누적 된 그래디언트)를 정리하지 않은 경우이 최적화 프로그램은 매개 변수가 0 인 경우에도 finetuning (또는 상태 비 저장 SGD 사용)을 위해 새롭고 새로운 옵티 마이저를 사용하는 경우 매개 변수는 역방향 없음 모드에 의해 변경되지 않고 유지됩니다. –