pytorch文档阅读(二)torch.nn.Convolution layers

1.模块功能简介

这个模块就是torch为我们设计好的一些层结果,比如我想给网络加一个卷积层,直接用这个模块里的函数就可以实现,而不像低级语言需要自己编写层间的矩阵乘法以及变量的储存等工作,极大提高了网络搭建的效率。

一行代码就可以给网络添加一个二维卷积层:

 self.conv1 = nn.Conv2d(3, 6, 5)  

Convolution layers模块包含的子模块

pytorch文档阅读(二)torch.nn.Convolution layers_第1张图片

2.子模块介绍

1)Conv1d

对一个信号进行一维卷积。一般我们处理图片时是二维卷积,这里处理一些声音信号等一维的信号时使用。

函数原型:

torch.nn.Conv1d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros')

输入尺寸(N,Cin,L):N为batchsize,就是数据个数;Cin是输入数据的通道数,可能是多个通道的,卷积核的通道数要和这个一致;L信号的长度,卷积核就是在这个长度上移动,进行卷积的。

输出尺寸(N,Cout,Lout):N为batchsize,数据个数不会改变;Cout是输出通道数,等于卷积核的个数,一般在网络中因为使用了很多卷积核,这个数字会随着网络变深而增加;Lout输出长度,根据输入长度、卷积核大小、是否补零、步长等决定。

pytorch文档阅读(二)torch.nn.Convolution layers_第2张图片

我们主要研究图像,所以这部分介绍到此为止

2)Conv2d

torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros')

最简单的情况:

输入(N,Cin,H,W):N为batchsize,就是一组图片的个数;Cin是输入数据的通道数,例如RGB三个通道;H、W是图片的尺寸。

输出(N,Cout,Hout,Wout):N为batchsize,和输入相同;Cout是输出通道数,等于卷积核的个数,一般在网络中因为使用了很多卷积核,这个数字会随着网络变深而增加;Hout,Wout是输出feature图的尺寸,根据输入尺寸、卷积核大小、是否补零、步长等决定。

pytorch文档阅读(二)torch.nn.Convolution layers_第3张图片

计算关系如下:

某些参数介绍:

dilation:进行膨胀卷积用的参数;

groups:可以给通道分组,进行不同的卷积,必须能够整除in_channels 和out_channels,例如

             groups=1,所有输入通道都用卷积核1进行卷积来算输出的一个通道

             groups=2,一半的输入通道用卷积核1进行卷积来算输出的一个通道

3)Conv3d

这个可能是用于点云处理的,略

4)ConvTranspose1d、ConvTranspose2d、ConvTranspose3d

反卷积层,以2d为例,相当于decoder的操作,使feature图的尺寸变大

torch.nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride=1, padding=0, output_padding=0, groups=1, bias=True, dilation=1, padding_mode='zeros')

5)Unfold

把卷积核扫到的部分展开成一维向量

你可能感兴趣的:(pytorch,机器学习)