如何分析pytorch的一维卷积nn.Conv1d

发布时间:2021-12-04 18:38:44 作者:柒染
来源:亿速云 阅读:531

如何分析pytorch的一维卷积nn.Conv1d,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

 torch.nn.Conv1d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True)

在一维卷积里,输入维度是这样的[batch_size,seq_len,input_size],其中第一维seq_len充当n_channels的角色,但在进行一维卷积之前必须交换seq_len和input_size的顺序,所以会是[batch_size,input_size,seq_len],所以第一维input_size充当n_channels的角色。而卷积发生在最后一维上,所以实际上input_size应该等于卷积中的in_channels,而seq_len则实际参与计算,计算后的结果根据以下公式:

seq_len = ((seq_len + 2 * m.padding[0] - m.dilation[0] * (m.kernel_size[0] - 1) - 1) / m.stride[0] + 1)

举个例子:

conv1 = nn.Conv1d(in_channels=256,out_channels=100,kernel_size=2)
input = torch.randn(32,35,256)
# batch_size x text_len x embedding_size -> batch_size x embedding_size x text_len
input = input.permute(0,2,1)
out = conv1(input)
print(out.size())

 这里32为batch_size,35为句子最大长度,256为词向量。

再输入一维卷积的时候,需要将32*35*256变换为32*256*35,因为一维卷积是在最后维度上扫的,最后out的大小即为:32*100*(35-2+1)=32*100*34

关于如何分析pytorch的一维卷积nn.Conv1d问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

推荐阅读:
  1. Pytorch 实现sobel算子的卷积操作详解
  2. PyTorch 普通卷积和空洞卷积实例

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

pytorch

上一篇:Pytorch中的5个非常有用的张量操作分别是什么

下一篇:如何解析Pytorch转ONNX的理论分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》