1 问题
我们知道,在学习深度学习的过程中,搭建网络是我们必须要掌握的,在搭建网络的过程中,我们也遇到了很很多的问题,为什么要使用卷积层,卷积层的参数我们应该怎么去定义,以及为什么要去用池化,池化的参数又该怎么去定义,还有连接层?这些都是在搭建优质网络中必须要使用的。该怎么去使用?各层的参数该怎么定义?
2 方法
2.1 卷积层
卷积就是使用输入矩阵与卷积核进行卷积计算,通过卷积计算后的结果据说目标的特征信息。比如我们输入6x6的输入矩阵和3x3的卷积核进行计算后,我们得到的就是一个4x4的矩阵,这样就很明显我们得到的矩阵的特征信息减少了,如果我们需要去维持6x6的矩阵维度,我们就需要去在矩阵的最外层用0进行填充,经过填充过后的矩阵后我们得到的就是一个和原矩阵维度相同的矩阵。如下图:
在pytorch中卷积我们常用的参数有nn.Conv2d(in_channels, out_channels, kernel_size stride, padding)
In_channels:输入的维度 out_channels:输出的维度 kernel_size:卷积核大小 stride:卷积核每步移动的距离,默认是1 padding:边缘填充,默认是0
2.2 池化层
池化层是降低数据特征的维度,在一定程度上防止数据的过拟合,同时缓解卷积层对于位置的敏感性。在这层中通常使用较多的是MaxPool2d和AvgPool2d,区别在于使用卷积核进行运算时,是采取最大值还是平均值。以MaxPool2d为例,在下述矩阵中采用大小为二的卷积核,输出如下。若采用平均池化层,则是对每一个卷积核内的内容取平均值。
pytorch中给定的池化层函数中,卷积核尺寸是没有默认值的,其余的均用,常用的参数如下:
stride:卷积核移动的步长,默认为None(即卷积核大小)
padding:输入矩阵进行填充,默认为0
2.3 全连接层
全连接层基本上用来作为模型的最后一层,是将每个神经元与所用前后的神经元进行连接,得到图像的特征信息输出。
pytorch中全连接模版:
nn.Linear(in_features,out_features)
in_features: 输入维度
out_features: 输出维度
3 结语
在本次的博客中,我总结了在上述三层在python中经常使用的参数,这当我们在搭建自己的网络的时候是非常用帮助的,在搭建网络的时候我们可以明确每一个参数的意思,这可以去加快我们对网络的认识,以及让自己搭建网络的速度更快。还有就是看见别人搭建的很好的网络,我们可以更快的去理解网络的搭建过程,进而创建网络。