2017-09-04 5 views
0

버전 : chainer 2.0.2 나는 아담 최적화, 다음 오류를보고 사용, 나는 그것이이 코드 (? fix1 == 0)에 의해 발생했다 발견 :체인저에 Adam Optimizer 보고서 오류가 있습니까?

@property 
    def lr(self): 
     fix1 = 1. - math.pow(self.hyperparam.beta1, self.t) 
     fix2 = 1. - math.pow(self.hyperparam.beta2, self.t) 
     return self.hyperparam.alpha * math.sqrt(fix2)/fix1 

오류 로그 : adam.py에 :

Traceback (most recent call last): 
    File "AU_rcnn/train.py", line 237, in <module> 
    main() 
    File "AU_rcnn/train.py", line 233, in main 
    trainer.run() 
    File "/root/anaconda3/lib/python3.6/site-packages/chainer/training/trainer.py", line 285, in run 
    initializer(self) 
    File "/root/anaconda3/lib/python3.6/site-packages/chainer/training/extensions/exponential_shift.py", line 48, in initialize 
    self._init = getattr(optimizer, self._attr) 
    File "/root/anaconda3/lib/python3.6/site-packages/chainer/optimizers/adam.py", line 121, in lr 
    return self.hyperparam.alpha * math.sqrt(fix2)/fix1 
ZeroDivisionError: float division by zero 
+0

'exponential_shift'에서 어떤 값을 변경하려고 시도 했습니까? Adam은 학습 속도로 '알파'를 사용하고 'lr'자체는 만져서는 안됩니다. – corochann

+0

아담 알고리즘을 사용하는 방법? 나는 lr을 설정할 수 없습니까? – machen

+0

@corcochann은 adam을 사용하는 예제 코드입니다. 그렇습니다. 모든 epoch에서 lr decay exponential_shift를 설정합니다. = 0.9 – machen

답변

0

"alpha"속성을 사용하여 Chainer에서 Adam의 학습 속도를 제어합니다. "lr"은 기본 제공 속성으로 정의되었으므로 다른 값으로 대체해서는 안됩니다.

ExponentialShift (official doc)의 속성으로 "alpha"를 설정하고 최적화 비율을 Adam으로 설정하면 학습률이 감소합니다.

from chainer.optimizers import Adam 
optimizer = Adam(alpha=0.001) 

# --- Define trainer here... --- 

trainer.extend(extensions.ExponentialShift("alpha", 0.99, optimizer=optimizer), trigger=(1, 'epoch')) 
0

필자도 동일한 문제를 가지고 있으며, 코로 만의 시도를 시도했다. 그러나, 그것은 교착 상태를 슬쩍하지 않았습니다.


내 chainer 버전 2.1.0 사용 된 코드는 https://github.com/chainer/chainer/blob/master/examples/cifar/train_cifar.py 는 "최적화 = chainer.optimizers.Adam()"로 L57을 변경할 수 있습니다.

+0

이것은 실제로 질문에 대답하지 않습니다. 다른 질문이있는 경우 [질문하기] (https://stackoverflow.com/questions/ask)를 클릭하여 질문 할 수 있습니다. [평판] (https://stackoverflow.com/help/privileges/set-bounties)을 충분히 확보하면 [현상금 추가] (https://stackoverflow.com/help/privileges/set-bounties)를 통해이 질문에 더 집중할 수 있습니다. 평판). - [리뷰에서] (리뷰/저품절 포스트/17533049) – Antti29

+0

저는 이것이 모듈을 어떻게 가져올 지 문제라고 생각합니다. 그러나 지적 해 주셔서 감사합니다, 나는 나의 대답을 업데이트했다. – corochann