参数介绍
torch.nn.Conv1d(in_channels, out_channels, kernel_size, stride, padding, padding_mode dilation, groups, bias, )
- in_channels: (int)输入数据的通道数,即对某条训练数据来说由多少组向量表示。例如对于由一维向量表示的一条数据来说,通道数为1;对于文本数据来说,一个句子是由m个单词组成,那么通道数就可以是m
- out_channels: (int)卷积产生的通道数,可以理解为卷积核的个数
- kernel_size: (int or tuple)卷积核的大小,若参数为元组,元组中应只有一个元素
- stride: (int or tuple, optional)卷积的步幅。默认值为1,若为元组,元组中应只有一个元素
- padding: (int, tuple or str, optional)添加到输入两侧的填充个数。默认值为0
- padding_mode(string, optional),两侧的填充模式,表示两侧不同的填充方式,可选的模式有”‘zeros’, ‘reflect’, ‘replicate’ 或 ‘circular’. 默认:‘zeros’”
- dilation:(int or tuple, optional)内核元素之间的间距。默认值为1,即卷积核的每个的元素都是紧挨着的,这个比较难以描述,可以在这里看到直观的动图
- groups:(int, optional)从输入通道到输出通道的阻塞连接数。默认值为1,输入通道数和输出通道数应该能整除groups,当groups为n时,意味着有n个卷积核,分别把输入数据拆分成n份去获取卷积之后的特征
- bias:(bool, optional)如果是True,向输出添加可学习的偏差。默认为True
输入输出
input – [batch_size , in_channels , i] (批大小, 输入数据的通道数, 输入数据维度)。
output – ( batch_size , out_channels , i](批大小, 输出数据的通道数, 卷积后数据维度)。
卷积后的维度计算方法: n − k + 2 × p s + 1 \frac{n-k+2\times{p}}{s} + 1 sn−k+2×p+1,(n:输入数据维度,k: 卷积核大小,p: 使用边界填充,s: 步长)。
卷积核维度:[in_channels, kernel_size, out_channels],out_channels代表卷积核的个数,用来提取多维特征。
举个例子
定义如下:
- in_channels=1, out_channels=1
- 输入通道:1, 输出通道:1,卷积核:1 × \times × 3 × \times × 1,步长:1,填充:0
- 批大小:1, 数据的通道数:1, 数据长度: 5
import torchimport torch.nn as nninput = torch.randn(1, 1, 5)conv = nn.Conv1d(in_channels=1, out_channels=1, kernel_size=3, stride=1, padding=0)out = conv(input)
计算过程:
输出:批大小:1, 数据的通道数:1, 数据长度: 3
参考:https://blog.csdn.net/xu624735206/article/details/124961990