一维卷积神经网络的理解

设输入的数据维度是B x S x T

一维卷积神经网络在维度S上进行卷积

如下,设置一维卷积网络的输入通道为16维,输出通道为33维,卷积核大小为3,步长为2

# in_channels: 16
# out_channels: 33
# kernel_size: 3
m = nn.Conv1d(16, 33, 3, stride=2)
input = torch.randn(20, 16, 50)
output = m(input)
# shape of output is ([20, 33, 24])
# 最后一个维度:
# (50 - 3)/2 + 1 = 24
print(output.shape)

如上所述,输入维度为20 x 16 x 50

经过一维卷积后输出维度是20 x 33 x 24

第二个维度从16变为33,因为一维卷积输入通道为16,对应输入的第二个维度,一维卷积输出为33,对应输出的第二个维度

最后一个维度从50变为24,将参数带入公式[(n+2p-f) / s + 1]向下取整得到[(50-3)/2 + 1] = 24

 

而全连接神经网络对维度T进行卷积

使用和上述相同的输入维度,设置全连接神经网络的输入维度为input的最后一个维度50,输出维度为33

m1 = nn.Linear(50, 33)
output1 = m1(input)
# shape of output1 is ([20, 16, 33])
print(output1.shape)

将输入通过全连接神经网络后得到输出维度为20 x 16  x 33

即,全连接神经网络只在输入的最后一个维度进行卷积

 

 

你可能感兴趣的:(pytorch,神经网络,卷积)