一、卷积层、激活层、池化层
1、激活层
所谓激活,实际上是对卷积层的输出结果做一次非线性映射。激活函数可以引入非线性因素,解决线性模型所不能解决的问题。[深度学习]人工神经网络中激励函数作用详解
从上图中可以看到,输入信息x在神经元内首先经过加权求和,然后通过激活函数的非线性转换,将数据控制在一定范围区间内。转换的结果作为下一层神经元的输入,或作为结果进行输出。
常见的激励函数:sigmoid函数、tanh函数、ReLu函数、SoftMax函数、dropout函数等。
2、池化层
所谓池化(欠采样或下采样),主要用于特征降维,压缩数据和参数的数量,减小过拟合
二、全连接层
CNN 入门讲解:什么是全连接层? - 蒋竺波的文章 - 知乎
1、经过前面若干次卷积+激活+池化
后,终于来到了全连接层(fully connected layers,FC)
其实在全连接层之前,如果神经元数目过大,学习能力强,有可能出现过拟合。
因此,可以引入dropout操作,来随机删除神经网络中的部分神经元,来解决此问题。
2、全连接层,在整个卷积神经网络中起到“分类器”的作用。
3、如果说卷积层、池化层和激活函数层等操作是将原始数据映射到隐层特征空间的话,
全连接层则起到将学到的“分布式特征表示”映射到样本标记空间的作用。
三、输出层
1、最后一层全连接+Softmax
2、linear层:torch.nn.Linear()函数的理解
class torch.nn.Linear(in_features,out_features,bias = True )
对应的线性变换公式如下所示:这里的A便是那个权重矩阵
Parameter:
in_features
:每个输入样本的大小
out_features
: 每个输出样本的大小
bias
:如果设置为False,则图层不会学习附加偏差。默认值:True
Shape:
Input
: (N,in_features)
Output
:(N,out_features)
weight
: (out_features, in_features)
bias
: (out_features,1)
Example:
m = nn.Linear(20, 30)
input = autograd.Variable(torch.randn(128, 20))
output = m(input)
print(output.size())
在这个案例中,in_features=20
,out_features=30
, N=128
,
因此x(128,20)
;weight(30,20)
;bias(30,1)
,故将weight转置之后带入上述线性变换公式有:
(128,20)*(20,30)+(30,1) = (128,30)
,所以,output.size是 (128,30)