热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

全连接层与torch.nn.linear()理解

全连接层定义全连接层(fullyconnectedlayers,FC)在整个卷积神经网络中起到”分类器“的作用。如果说卷积层,池化层和激活函数层和激活

全连接层定义

全连接层(fully connected layers, FC)在整个卷积神经网络中起到”分类器“的作用。如果说卷积层,池化层和激活函数层和激活函数层等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的”分布式特征表示“映射到样本标记空间的作用。在实际使用中,全连接层可由卷积操作实现;

对前层是全连接的全连接层可以转化为卷积核为1*1的卷积,而前层是卷积层的全连接层可以转化为卷积核为h*w的全局卷积,h和w分别为前层卷积结果的高和宽。

全连接的核心操作就是矩阵向量乘积y=Wx

本质就是由一个特征空间线性变换到另一个特征空间。目标空间中的任一维——也就是隐层的一个cell——都认为会受到源空间的每一维的影响。不考虑严谨,可以说,目标向量是源向量的加权和。

在CNN中,全连接常出现在最后几层,用于对于前面设计的特征做加权和,比如mnist,前面的卷积和池化相当于做特征工程,后面的全连接相当于做特征加权。(卷积相当于全连接的有意弱化,按照局部视野的启发,把局部之外的弱影响直接抹为0影响,还做了一点强制,不同的局部所使用的参数居然一致。弱化使参数变少,节省计算量,又专攻局部不贪多求全,强制进一步减少参数。在RNN中,全连接用来把embedding空间拉到隐层空间,把隐层空间转回label空间等。

在pytorch中的nn.Linear表示线性变换,官方文档给出的数学计算公式是

y = xA^T + b

根nn.linear的定义,输出y为

y_{4\times3}=xW^T+Bias=x_{4\times2}W^T_{2\times3}+B_{1\times 3}

备注:这里需要注意下,偏置b的加法与普通的矩阵加法不太一样,这里只需要保持偏置b的列数与输出y的列数相同即可,对应位置元素相加,每一行都是加的同样的偏置



推荐阅读
author-avatar
吾车吾家
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有