-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
做mask时候不用划分成9份吧, 4份就可以?附验证代码 #194
Comments
Me too,最近精读代码想的和你一样 |
I think it might get more concern from authors if you translate this issue into English. (建议把issue翻译成英文) |
哈哈, 好吧, 我看作者是亚研院那几个国内兄弟, 懒得搞英文了(还是菜), 哈哈。 |
就是分块分多了, 但是还是赞叹构思太巧妙了, 瑕不掩瑜。 |
大佬能大概说说代码的思路吗,小弟太菜没看明白这里代码,怎么实现的 |
自注意力机制 Q K 相乘不是出来一个矩阵嘛? 然后比如 i行 j列这个元素,代表第i个token和第j个token之间的关系。然后来自不同窗口的两个token应该没关系,所以应该强行置0。 attn_mask = mask_windows.unsqueeze(1) - mask_windows.unsqueeze(2) 这句话就是给 算出来的矩阵标序号, 算出来来自一个窗口为0, 不同窗口不为0。 不为0的给原矩阵对应位置-100, 这样softmax出来这里就接近0, 也就达到了前面说的强行置0的效果. |
嗯嗯,谢谢大佬! |
@jmjkx 我之前在pytorch/vision#6246 里添加了SwinV2到torchvision里面。 你可以再提一个issue,如果验证9->4不会引起精度降低的话,这简化还是挺有价值的。 |
好的, 这几天抽时间写个英文的。 在 torchvision repo 提么? 还是在原来微软作者那里提 |
@jmjkx 我看这个微软的repo好像作者已经不维护了吧。 |
好的好的, 谢谢 |
请问如果我想在kv上做spatial reduction的话,这个mask该怎么变呢? |
本质上只要保证新窗口内的各个patch有来源的区分性就可以,作者通过 mask_windows.unsqueeze(1) - mask_windows.unsqueeze(2) 来得到一个来源图,那完全可以划分成4份就可以了啊。
这是验证代码
结果是true,是否说明直接划分四个区域就行了呢?
The text was updated successfully, but these errors were encountered: