傻瓜式讲解Conv1D家族-系列1-Conv1d

========================= 这篇博客主要是讲解 Conv1d =======================

处理一维数据如文本或者语音时,需要用到一维卷积,综合网上各种资料和自己的理解,尽可能傻瓜式的说明Conv1d的过程,从而说明  ConvTranspose1d的运算过程,并且用 Pytorch验证。

Pytorch 的 Conv1d 的官方文档:

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

 

废话不多说!

  •  

import torch

import torch.nn as nn

 

k = 3

conv2 = nn.Conv1d(in_channels=1, out_channels=1, kernel_size=k, stride = 1, padding = 0 , bias = False)

conv2.weight.data = torch.ones(1,1,k)

x = torch.ones(1, 1, 4)

 

print('=====conv=====')

for name, l in conv2.named_parameters():

    print('{}={}'.format(name, l.data))

 

x4 = conv2(x)

print(x4)

 

上面是一个输入为 [x1, x2, x3, x4] = [1,1,1,1] 的信号,卷积核是 [w1,w2,w3] = [1,1,1],stride = 1,没有 padding 和 bias。计算流程:

输入

1(x1)

1(x2)

1(x3)

1(x4)

 

卷积核和输入信号的第1次运算

1(x1 * w1)

1(x2 * w2)

1(x3 * w3)

 

第1次输出:∑=3

卷积核和输入信号的第2次运算

 

1(x2 * w1)

1(x3 * w2)

1(x4 * w3)

第2次输出:∑=3

所以上述 x4 = [3,3],pytorch 验证结果如下:

 

  • 假设上述其他代码不变,但是 padding = 1,只修改上述一行代码:

conv2 = nn.Conv1d(in_channels=1, out_channels=1, kernel_size=k, stride = 1, padding = 1 , bias = False)

计算流程如下:

输入

0(padding)

1(x1)

1(x2)

1(x3)

1(x4)

0(padding)

 

卷积核和输入信号的第1次运算

0 (0 * w1)

1(x1 * w2)

1(x2 * w3)

 

 

 

第1次输出:∑=2

卷积核和输入信号的第2次运算

 

1(x1 * w1)

1(x2 * w2)

1(x3 * w3)

 

 

第2次输出:∑=3

卷积核和输入信号的第3次运算

 

 

1(x2 * w1)

1(x3 * w2)

1(x4 * w3)

 

第3次输出:∑=3

卷积核和输入信号的第4次运算

 

 

 

1(x3 * w1)

1(x4 * w2)

0(0 * w3)

第4次输出:∑=2

所以上述 x4 = [2,3,3,2],pytorch 验证结果如下:

 

  • 假设上述代码保持不变,但是 stride = 2 ,只修改上述一行代码:

conv2 = nn.Conv1d(in_channels=1, out_channels=1, kernel_size=k, stride = 2, padding = 1 , bias = False)

 

输入

0(padding)

1(x1)

1(x2)

1(x3)

1(x4)

0(padding)

 

卷积核和输入信号的第1次运算

0 (0 * w1)

1(x1 * w2)

1(x2 * w3)

 

 

 

第1次输出:∑=2

卷积核和输入信号的第2次运算

 

 

1(x2 * w1)

1(x3 * w2)

1(x4 * w3)

 

第2次输出:∑=3

所以上述 x4 = [2,3],pytorch 验证结果如下:

 

 

码字儿不易,Buy Me A Coffee(好押韵~~~~~)

 

 

 

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值