Pytorch中Conv相关模型调用

注意:RNN、LSTM的batch_first参数,对于不同的网络层,输入的维度虽然不同,但是通常输入的第一个维度都是batch_size,比如torch.nn.Linear的输入(batch_size,in_features),torch.nn.Conv2d的输入(batch_size, C, H, W)。而RNN的输入却是(seq_len, batch_size, input_size),batch_size位于第二维度!虽然你可以将batch_size和序列长度seq_len对换位置,此时只需要令batch_first=True。

说明:torch.nn和torch.nn.function的区别:前者是类,侧重于数据结构,参数已经内置,可一直接放在__init__中, 后者侧重于算法, 其参数需要手动传入,可将参数放在__init__中,将模型放在forward中。

Conv1d

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

in_channels(int) – 输入信号的通道。在文本分类中,即为词向量的维度
out_channels(int) – 卷积产生的通道。有多少个out_channels,就需要多少个1维卷积
kernel_size(int or tuple) - 卷积核的尺寸,卷积核的大小为(k,),第二个维度是由in_channels来决定的,所以实际上卷积大小为kernel_size*in_channels
stride(int or tuple, optional) - 卷积步长
padding (int or tuple, optional)- 输入的每一条边补充0的层数
dilation(int or tuple, `optional``) – 卷积核元素之间的间距
groups(int, optional) – 从输入通道到输出通道的阻塞连接数
bias(bool, optional) - 如果bias=True,添加偏置

输入:[batch_size,seq_len,embedding_dim]进行二三维度的转置(一维卷积是在最后一个维度进行操作的)->[batch_size,embedding_dim,seq_len]

输出:[batch_size,out_channels,sql_len-kernel_size+1]

 

 

功能:一维卷积,顾名思义就是在一维空间上进行卷积,通常用来处理时序的数据,卷积的过程如下图。

Conv2d

in_channels:网络输入的通道数。
out_channels:网络输出的通道数。
kernel_size:卷积核的大小,如果该参数是一个整数q,那么卷积核的大小是qXq。
stride:步长。是卷积过程中移动的步长。默认情况下是1。一般卷积核在输入图像上的移动是自左至右,自上至下。如果参数是一个整数那么就默认在水平和垂直方向都是该整数。如果参数是stride=(2, 1),2代表着高(h)进行步长为2,1代表着宽(w)进行步长为1。
padding:填充,默认是0填充。
dilation:扩张。一般情况下,卷积核与输入图像对应的位置之间的计算是相同尺寸的,也就是说卷积核的大小是3X3,那么它在输入图像上每次作用的区域是3X3,这种情况下dilation=0。当dilation=1时,表示的是下图这种情况。

输入输出:

 功能:函数功能为在由多个输入平面组成的输入信号上应用二维卷积。

Conv3d同理

posted @ 2022-11-05 23:28  ymx10086  阅读(174)  评论(0)    收藏  举报