用通俗的语言来说,attention就是 分析某一个 向量与一组向量的相关性 只是不使用直接的相关性系数,来使用矩阵的方法 进行计算 当然了 这里最简单的attention与transformer 里面的还是不一样的?attention 有好多种 !!
博客参考:https://blog.csdn.net/qq_37236745/article/details/107085532?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162858666416780269873230%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162858666416780269873230&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-1-107085532.pc_search_result_cache&utm_term=Seq2Seq%28attention%29%E7%9A%84PyTorch%E5%AE%9E%E7%8E%B0&spm=1018.2226.3001.4187
视频参考:https://www.bilibili.com/video/BV1op4y1U7ag?from=search&seid=900729188878337684
?
?代码实现:这里的数据是二维的 假设是三维的,一般在seq2seq中会有 ,而且第一维度的 也是1
所以不影响!
a=torch.rand(1,256)
a=a.repeat(10,1)
print(a.size())
b=torch.rand(10,256)
weights = torch.tanh(attn(torch.cat([a, b],1)))
print(weights.size())
v=nn.Linear(10,1)
attention = F.softmax(v(weights),dim=0)
print(attention)
?
?
?
|