ema_update函数的一点儿疑问,期待解答~
Closed this issue · 1 comments
lydia8998 commented
在encoder.py文件中,有这么一段代码:
def ema_update(self):
def update(student, teacher):
with torch.no_grad():
# m = momentum_schedule[it] # momentum parameter
m = self._momentum
for param_q, param_k in zip(student.parameters(), teacher.parameters()):
param_k.data.mul_(m).add_((1 - m) * param_q.detach().data)
update(self.encoder, self.encoder_ema)
update(self.projector, self.projector_ema)
这里的self._momentum=0.94默认,这样是否会导致self.enocder_ema以及self.projector_ema每一个epoch后的更新会0.94概率依然维持自己本身,而向self.encoder 和self.projector学习的幅度权重只有0.04太低?是不是把self._momentum设置为0.04更合理?期待您的解惑,感谢!
THINK2TRY commented
@lydia8998 感谢关注GraphMAE2 ! momentum
是需要使用一个接近1的值,保持 encoder 和 ema_encoder 存在一定的距离。momentum
接近于0会使得 target_encoder 和 encoder 本身参数几乎完全一样。之前的工作中也是保持较大的momentum