IIGROUP / MANIQA

[CVPRW 2022] MANIQA: Multi-dimension Attention Network for No-Reference Image Quality Assessment
Apache License 2.0
307 stars 36 forks source link

A question about TABlock #16

Closed RandomCoins closed 1 year ago

RandomCoins commented 2 years ago

attn = q @ k.transpose(-2, -1) * self.norm_fact attn = self.softmax(attn) x = (attn @ v).transpose(1, 2).reshape(B, C, N) x = self.proj_drop(x) x = x + _x 您好, 关于TABlock的代码,我理解attn的形状是(B, C, C),v的形状是(B, C, N),做完矩阵乘法之后的形状是(B, C, N),那这里为什么还需要使用transpose交换维度1和维度2,Swin Transformer代码中有这一步是因为使用了多头注意力,但您的代码中似乎并没有使用多头注意力。

TianheWu commented 1 year ago

这两个本质区别是在输入不同,一个是以【B,N,C】作为输入,还有一个是以【B, C, N】作为输入,所以代码核心是一样的。