torch.nn.Conv1d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros', device=None, dtype=None)
一维卷积层,输入的尺度是(N, C_in,L),输出尺度( N,C_out,L_out)的计算方式:
N代表batch_size
C代表channel
L代表长度
说明
bigotimes
: 表示相关系数计算stride
: 控制相关系数的计算步长dilation
: 用于控制内核点之间的距离,详细描述在这里groups
: 控制输入和输出之间的连接, group=1
,输出是所有的输入的卷积;group=2
,此时相当于有并排的两个卷积层,每个卷积层计算输入通道的一半,并且产生的输出是输出通道的一半,随后将这两个输出连接起来。
Parameters:
- in_channels(
int
) – 输入信号的通道 - out_channels(
int
) – 卷积产生的通道 - kerner_size(
int
ortuple
) - 卷积核的尺寸 - stride(
int
ortuple
,optional
) - 卷积步长 - padding (
int
ortuple
,optional
)- 输入的每一条边补充0的层数 - dilation(
int
ortuple
, `optional``) – 卷积核元素之间的间距 - groups(
int
,optional
) – 从输入通道到输出通道的阻塞连接数 - bias(
bool
,optional
) - 如果bias=True
,添加偏置
shape:
输入: (N,C_in,L_in)
输出: (N,C_out,L_out)
输入输出的计算方式:
变量:
weight(tensor
) - 卷积的权重,大小是(out_channels
, in_channels
, kernel_size
)
bias(tensor
) - 卷积的偏置系数,大小是(out_channel
)
example:
import torch
import torch.nn as nn
import torch.autograd as autograd
m = nn.Conv1d(16, 33, 3, stride=1)
print(m)
input = autograd.Variable(torch.randn(20, 16, 50))
print(input.shape)
output = m(input)
print(output.shape)
Conv1d(16, 33, kernel_size=(3,), stride=(1,))
torch.Size([20, 16, 50])
torch.Size([20, 33, 48])