Adam 优化器在链接器中报告错误?
Adam optimizer report error in chainer?
版本:chainer 2.0.2
我使用 Adam 优化器,然后报错,我发现是这段代码引起的(fix1==0?):
在 adam.py:
@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
错误日志:
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
使用 "alpha" 属性控制 Chainer 中 Adam
的学习率。
"lr" 定义为内置 属性,不应被其他值覆盖。
如果您使用 Adam
优化器,请将 "alpha" 设置为 ExponentialShift
(official doc) 的属性并降低学习率。
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'))
我也有同样的问题,试过corochann的方法。
然而,并没有解决问题。
我的链接器版本 2.1.0
使用的代码是 https://github.com/chainer/chainer/blob/master/examples/cifar/train_cifar.py
将L57改为"optimizer = chainer.optimizers.Adam()".
版本:chainer 2.0.2 我使用 Adam 优化器,然后报错,我发现是这段代码引起的(fix1==0?): 在 adam.py:
@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
错误日志:
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
使用 "alpha" 属性控制 Chainer 中 Adam
的学习率。
"lr" 定义为内置 属性,不应被其他值覆盖。
如果您使用 Adam
优化器,请将 "alpha" 设置为 ExponentialShift
(official doc) 的属性并降低学习率。
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'))
我也有同样的问题,试过corochann的方法。 然而,并没有解决问题。
我的链接器版本 2.1.0 使用的代码是 https://github.com/chainer/chainer/blob/master/examples/cifar/train_cifar.py 将L57改为"optimizer = chainer.optimizers.Adam()".