前天看了 criss-cross 里的注意力模型  仔细理解了  在: https://www.cnblogs.com/yjphhw/p/10750797.html

今天又看了一个注意力模型 《Self-Attention Generative Adversarial Networks》   https://arxiv.org/pdf/1805.08318v1.pdf

里边关键的还是注意力机制,又花了一个小时理解了下,感觉这种方式能够带来另一种视野的扩大,其中cnn是通过不断卷积扩大视野。

而这种注意力模型直接通过内积(矩阵的乘法)和 线性组合来直接获取全局信息,作者们都认为是注意力! 是否有其他含义还需要进一步理解。

这篇文章里关键就是注意力的产生:

这里边的操作 圆圈里的差  就是值得矩阵乘法。 整个这种注意力机制的论文多起来, 经典的style tranfer的论文也是用类似的方法计算风格损失的 格莱姆矩阵

下面就从输入x开始, x是个 c*w*h的 特征图  论文里写 c*n 是因为把w*h 展开了 。

然后三路 1*1卷积,没问题,这个操作可以先不展开。

这里我们用不展开的方式 先描述  f(x)和g(x)做 c`*1*1的卷积, h(x)是 做 c*1*1的卷积

做完后 对f(x),g(x) 在空间维度上拉开 w*h 拉开为 n=w*h

黄色的就是  c`*n    绿色也是  c`*n      大小的矩阵

对黄色的转置 就是 n*c`    然后 和绿色的就能做矩阵乘法

得到一个 n*n的矩阵。下边为了归一化参数,在列的方向上做softmax。得到了一个n*n的注意力矩阵,为什么在列方向上归一化,这是因为为了下一步和h(x)的特征图相乘

h(x)是经过 c*1*1的卷积操作,对输入x进行了一次变换的来的,同样对其拉开就成了一个 c*n的矩阵

刚才得到的注意力矩阵式n*n的,并且在列上归一化了,  所以 h(x)* attention  得到一个  (c*n) *(n*n)= c*n 大小的矩阵。

然后恢复 c*n 到 c*w*h就可以。

这样就可以看到这完全就是对每个位置和所有位置进行加权,一下子具有全局感受视野,而且每个位置的权值不同。

这可以细细体会下,这样的操作到底代表了什么。

卷积是扩大视野的方法,这种操作直接一步到位获取了全局视野。

和criss-cross的方法是在通道上,这个直接是在通道内。不太确定。

之前还有squeeze 和 excitation的注意力方法

如何结合起来,是否可以用在分类上,提升分类精度? 值得思考。

《Self-Attention Generative Adversarial Networks》里的注意力计算的更多相关文章

  1. AttnGAN: Fine-Grained Text to Image Generation with Attentional Generative Adversarial Networks 笔记

    AttnGAN: Fine-Grained Text to Image Generation with Attentional Generative Adversarial Networks 笔记 这 ...

  2. SAGAN:Self-Attention Generative Adversarial Networks - 1 - 论文学习

    Abstract 在这篇论文中,我们提出了自注意生成对抗网络(SAGAN),它是用于图像生成任务的允许注意力驱动的.长距离依赖的建模.传统的卷积GANs只根据低分辨率图上的空间局部点生成高分辨率细节. ...

  3. Generative Adversarial Networks overview(2)

    Libo1575899134@outlook.com Libo (原创文章,转发请注明作者) 本文章会先从Gan的简单应用示例讲起,从三个方面问题以及解决思路覆盖25篇GAN论文,第二个大部分会进一步 ...

  4. Generative Adversarial Networks overview(1)

    Libo1575899134@outlook.com Libo (原创文章,转发请注明作者) 本文章会先从Gan的简单应用示例讲起,从三个方面问题以及解决思路覆盖25篇GAN论文,第二个大部分会进一步 ...

  5. GD-GAN: Generative Adversarial Networks for Trajectory Prediction and Group Detection in Crowds

    GD-GAN: Generative Adversarial Networks for Trajectory Prediction and Group Detection in Crowds 2019 ...

  6. StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks 论文笔记

    StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks  本文将利 ...

  7. 论文笔记之:Semi-Supervised Learning with Generative Adversarial Networks

    Semi-Supervised Learning with Generative Adversarial Networks 引言:本文将产生式对抗网络(GAN)拓展到半监督学习,通过强制判别器来输出类 ...

  8. Paper Reading: Perceptual Generative Adversarial Networks for Small Object Detection

    Perceptual Generative Adversarial Networks for Small Object Detection 2017-07-11  19:47:46   CVPR 20 ...

  9. (转)Introductory guide to Generative Adversarial Networks (GANs) and their promise!

    Introductory guide to Generative Adversarial Networks (GANs) and their promise! Introduction Neural ...

随机推荐

  1. python 保留字符

    False 假的 None 无 True 真的 and 和 as作为 assert 断言 break 打破 class 种类 continue 继续 def del 删除 elif 否则如果 else ...

  2. 解决spring3升级到spring4后jackjson报错

    1.这里说的是基于spring+springmvc+hibernate框架(其实跟持久层框架也没关系) 2.首先是springmvc的配置,处理json数据都会用到的.第5行是spring-4.x的写 ...

  3. DateTime类使用二:常用时间段操作(经典)

    //大家在做报表或查询的时候都会有给用户预设一些可选的日期范围(如上图)                //如本年度销售额.本季度利润.本月新增客户                //C#里内置的Da ...

  4. node.js学习三--------------------- http服务器模块的搭建

    /** * http服务器的搭建,相当于php中的Apache或者java中的tomcat服务器 */ // 导包 const http=require("http"); //创建 ...

  5. java xml 转 json

    <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> ...

  6. Unity3D AssetBundle的打包与加载

    在Unity项目开发过程中,当要做热更新时常常使用一个叫做AssetBundle的东西,这里做一点个人的学习记录 步骤1: 设置打包标签:具体步骤----进入Unity,选择某一资源然后看右下角,在那 ...

  7. python代码规范和命名规范

    一.简明概述 1.编码 如无特殊情况, 文件一律使用 UTF-8 编码 如无特殊情况, 文件头部必须加入#-*-coding:utf-8-*-标识 2.代码格式 2.1.缩进 统一使用 4 个空格进行 ...

  8. double 四舍五入保留一定的位数

    /** * double 类型的 四舍五入 保留一定的位数 * @param value * @param decimal 保留的位数 * @return * @throws Exception */ ...

  9. 微信小程序中的小小的遮罩层

    <view class='pop_wx_er'> <view>ddddddddddddd</view> <view>ddddddddddddd</ ...

  10. python爬取post请求Reque Payload的json数据

    import requests,json url = "https://www.yijiupi.com/v31/Product/ListProduct" headers = { ' ...