大家好,又见面了,我是你们的朋友全栈君。
设输入的数据维度是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
即,全连接神经网络只在输入的最后一个维度进行卷积
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/190580.html原文链接:https://javaforall.cn