torch.nn.Conv1d()----pytorch与一维卷积

本文深入解析了PyTorch中的nn.Conv1d()函数,介绍了其在一维卷积中的作用,包括源代码的翻译、计算过程的图解以及不同groups参数下的工作原理。通过实例展示了如何处理具有多个输入平面的输入信号,并解释了输入和输出尺寸的关系。
摘要由CSDN通过智能技术生成

nn.Conv1d()源代码翻译与解读:

源链接:https://pytorch.org/docs/stable/generated/torch.nn.Conv1d.html?highlight=conv1d#torch.nn.Conv1d

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 N N, C i n C_{in} Cin, L L L),输出尺寸( N N N, C i n C_{in} Cin, L L L),表达式如下:
在这里插入图片描述
其中星号表示valid coss-correlation运算符,N表示batch size,C表示channel的数目,L表示信号序列的长度。

这个模块支持TensorFloat32。

stride控制cross-correlation的步长(stride),一个数字或者one-element元组
padding控制应用于输入的填充量(padding),它可以是字符串{‘valid’,‘same’},也可以是一个int元组,给出应用于两边的隐式填充的数量
dilation控制内核点之间的间距,也被称为a-trous算法,这很难描述,这个链接(打不开也不着急,我后面会详细读过这篇文章,将重要内容写到博客里。)解释了膨胀的作用。
groups控制输入和输出之间的连接,in_channels和out_channels必须都能被groups整除。

举例子:

  • groups=1,all inputs are convolved to all outputs。
  • groups=2,该操作等价于有两个并行的conv层,每个层看到一半的输入通道,产生一半的输出通道,然后两者连接起来。
  • groups=in_channels,each input channel is convolved with its own set of filters(of size o u t _ c h a n n e l s / i n _ c h a n n e l s out\_channels/in\_channels out_channels/in_channels)

图解计算过程

假设输入特征维度是【B,C,T】,B=4,C=3,T=4
要求输出通道数量为3
黄色蓝色红色三个kernel构成Filter,在时间维度上移动。

在这里插入图片描述
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值