| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 1×1卷积的作用 NiN模型中的1×1卷积 -> 正文阅读 |
|
[人工智能]1×1卷积的作用 NiN模型中的1×1卷积 |
1*1的卷积? 原来看面经的时候经常看到这么个问题,问的是关于1*1卷积的好处和特点之类的。1*1的卷积,顾名思义就是用大小为1*1的卷积核去做卷积,但也仅仅是长宽为1,卷积核的通道数不做限制。 ? 通过1*1的卷积,每次只看一个像素点里多个通道的信息,不会识别一个通道里面的其他空间信息。因此1*1卷积侧重于融合一个像素点里3个通道(假如通道是3)的信息,对同一个像素点的不同通道值进行加权求和。 ? 经常有讲解说“可以把1*1的卷积看作全连接层”。这个如何理解呢? ? 如图,假设输入图像宽w高h,那么一共有w*h个像素点,每个像素点又有3个通道。我们可以把它看成w*h个维度为3的向量——这就等价于一个行数为w*h,列数为3的矩阵。 ? 此时假如说我们要得到通道数为2的output,则我们就需要2个卷积核,每个卷积核通道数当然也要为3,所以此时这两个卷积核也可以形成一个2*3的矩阵。(卷积核长宽都是1就省略了) ? 而我们得到的结果,也可以看作是行数为w*h,列数为2的矩阵。 ? 观察输入输出以及卷积核的维度变化,是不是就有矩阵乘法内味了?这就特别地像全连接层~~~但是它与全连接的不同之处在于,全连接的每一个参数各自独立,而这里每个像素点下的n个通道是有着一定权值共享的(用共同的卷积核)。 ? 所以1*1的卷积核,既可以充当是卷积,也可以看作是另一种意义上的全连接。 ? ?? ?????? 此外,特别简单地,使用1*1的卷积核的另一个特点在于它不会改变尺寸大小,但可以很方便地实现通道数的变化,控制卷积核的个数就可以达到这一目的。 NiN(Network in Network)网络中的1*1卷积? 之前提到过AlexNet,VGG等网络,都是在经过一些列卷积池化操作过后将结果打平(flatten),送入全连接层,最终将结果映射到结果数目的维度上。但是在这种做法下,当将flatten后的卷积结果连接到全连接层时,会带来很大的参数量。(比如AlexNet和VGG全连接层的第一个隐层都是4096个神经元,再乘上自己flatten后的维度(也是几千,比如VGG打平后的维度为512*7*7),这么一乘后参数量可达到百万级别。参数量过大一方面会占用内存和计算资源,另一方面也容易带来过拟合。 ? NiN在此基础上提出了用1*1卷积层来代替全连接层。整个NiN是由若干个NiN块组成的(这种由重复的小结构组成大结构的例子非常多,比如还有Resnet之类的)。每个NiN块组成为:普通卷积—>1*1的卷积—>1*1的卷积。我们用了1*1的卷积来充当全连接层的效果(1*1卷积核stride=1,padding=0)。只不过这里是对每一个像素(这个像素可能有很多通道)使用了相同的权重进行了全连接,这点在上面讨论1*1卷积的意义时讲了。 ? 那么,整体的NiN网络就是使用NiN块和3*3、stride=2的最大池化层进行交替连接。全局没有任何一个地方直接使用全连接层。那么,NiN是如何拟合到目标结果的呢? ? 在全连接中,假如我们是10分类任务,我们可以置最后一个输出层神经元个数为10。而在NiN中,因为没有全连接层,使用的是全局平均池化层(AdaptiveAvgPool2d)。具体操作是这样的:比如我们要做10分类任务,那么最后一个NiN块的输出通道数我们要设置为10,然后通过这么一个全局平均池化AdaptiveAvgPool2d(1,1),每个通道我们都会变成1*1的大小,因为有10个通道,我们就相当于得到了一个10维的向量,最后送入softmax去处理即可。 ? 整个NiN相比于带全连接层的卷积神经网络,通过1*1卷积减少了参数和计算量,也不容易过拟合。效果上也会好一丢丢~ ? 1*1卷积也被广泛应用于其他很多模型当中,以后再提到的时候就不会陌生了。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 17:23:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |