梳理一下1d,2d,3d卷积的用法
import torch.nn as nn
一、nn.Conv1d
1. 定义
class in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros')
2. 参数解释
参数名 | 含义 | 默认值 |
---|---|---|
in_channels(int) | 输入信号的通道数, 文本应用中为词向量的维度 | - |
out_channels(int) | 卷积产生的通道,卷积核数 | - |
kernel_size(int or tuple) | 卷积核尺寸(实际为kernel_size * in_channel) | - |
stride(int or tuple, optional) | 步长 | 1 |
padding (int or tuple, optional) | 输入两侧0补充的层数 | 0 |
dilation(int or tuple, optional) | 卷积核元素之间的间距 | 1 |
groups(int, optional) | 从输入通道到输出通道的阻塞连接数 | 1 |
bias(bool. optional) | true为添加偏置 | True |
padding_mode (string, optional) | ‘zeros’, ‘reflect’, ‘replicate’ or ‘circular’ | ‘zeros’ |
3. 输入输出格式
输入:(batch_size, word_vector, sequence_len)
,即(N, C_in, L_in)
输出:(N, C_out, L_out)
L_out ={ [ L_in + 2 x padding - dilation x (kernel_size - 1) -1] / stride }+1
默认情况下:L_out = L_in - kernel_size + 1
5. 示例
(batch_size, 256, 35)
conv1 = nn.Conv1d(in_channels=256,out_channels=100,kernel_size=2)
#批大小为32,句子的最大长度为35,词向量维度为256, 32*35*256
input = torch.randn(32,35,256)
#因为一维卷积是在最后维度上扫,所以做如下转换<