卷积神经网络
卷积神经网络可以认为是多个卷积层,池化层的堆叠,然后后面接全连接层,pytorch中对这些网络层进行了封装,我们可以直接使用:
卷积层:
class torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True)
参数解析:
in_channels:表示输入通道数
out_channels:表示输出通道数
kernel_size:表示卷积大小
stride:步长
padding:填充
dilation:(扩张)控制kernel点(卷积核点)的间距
grops:卷积核数量
bias:偏执
池化层:
class torch.nn.MaxPool2d(kernel_size, stride=None, padding=0, dilation=1, return_indices=False, ceil_mode=False)
参数解析:
kernel_size(int or tuple) :窗口大小可以为tuple,在nlp中tuple更多,(n,1)
stride(int or tuple, optional) :步长。默认值是kernel_size
padding(int or tuple, optional) :输入的每一条边补充0的层数
dilation(int or tuple, optional) :一个控制窗口中元素步幅的参数
return_indices:如果等于True,会返回输出最大值的序号,对于上采样操作会有帮助
ceil_mode:如果等于True,计算输出信号大小的时候,会使用向上取整,代替默认的向下取整的操作
基于pytorch搭建卷积神经网络
代码解析:
这里有四个Sequential,其中前面三个是卷积层,然后后面一个是全连接层,我们随便拿出一个卷积层,我们来解释一下:
self.layer2=nn.Sequential( nn.Conv2d(16,32,kernel=3), nn.BatchNorm2d(32), nn.ReLU(inplace=True), nn.MaxPool2d(kernel_size=2,stride=2) )
这个表示输入数据的通道数为16,然后卷积核数量为32,也就是输出的通道数为32,然后卷积核的大小为3*3,步长为1(默认),padding为1,不填充(默认)