为什么 timm 视觉转换器位置嵌入初始化为零?

Why is the timm visual transformer position embedding initializing to zeros?

我正在查看视觉转换器的 timm 实现和位置嵌入,他正在用零初始化他的位置嵌入,如下所示:

self.pos_embed = nn.Parameter(torch.zeros(1, num_patches + 1, embed_dim))

看这里: https://github.com/rwightman/pytorch-image-models/blob/master/timm/models/vision_transformer.py#L309

我不确定这在后来添加到补丁中时实际上是如何嵌入有关该位置的任何内容的?

x = x + self.pos_embed

欢迎任何反馈。

位置嵌入是包含在计算图中并在训练期间更新的参数。因此,是否用零初始化并不重要;他们是在训练中学到的。