我在高等图书馆看过maml的例子,但在我看来,他们忘记了除以meta_batch_size
,他们有:
qry_loss.backward()
他们应该
meta_batch_size = qry_loss.size(0)
(qry_loss/meta_batch_size).backward()
这是否正确?是否应该除以meta_batch_size
?
参考文献:
- 使用omniglot完整代码示例:https://github.com/facebookresearch/higher/blob/master/examples/maml-omniglot.py
- 交叉过帐:https://github.com/facebookresearch/higher/issues/104
- 交叉:https://discuss.pytorch.org/t/when-does-one-divide-by-the-meta-batch-size-for-maml-during-meta-learning/114625
如果您没有填充grads字段,请查看以下内容:https://github.com/facebookresearch/higher/issues/129
1条答案
按热度按时间kulphzqa1#
如果选择了正确的步长,则它们是“等效的”。
第一个具有此更新规则:
第二名:
如果
eta2 = eta1/B
,它们是相同的。假设你可以用mean +- std或多或少地替换梯度(不完全是,但那很好,这是为了得到一种感觉,如果它们或多或少地分布相同,足够相似)。