=====================这个博客主要是con v1d================
处理文本、语音等一维数据时,需要采用一维卷积,将网络上的各种资料与自己的理解整合起来,尽量傻乎乎地解释Conv1d的过程,从而说明ConvTranspose1d的运算过程,并通过Pytorch进行验证。
Pytorch的Conv1d官方文档:
3359 py torch.org/docs/stable/generated/torch.nn.con v1d.html? highlight=con v1d # torch.nn.con v1d
不说多馀的话!
导入途径
import torch.nn as nn
k=3
conV2=nn.conV1Din_channels=1,out_channels=1,kernel_size=k,stride=1,padding=0,bias=False )
con v2.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=conV2x ) )。
是打印x4 )
上面是输入[x1,x2,x3,x4 ]=[ 1,1,1,1 ]的信号,卷积核为[w1,w2,w3 ]=[ 1,1,1 ],stride=1,填充和bias为计算过程:
输入
1 ) x1 ) ) ) )。
1 ) x2 ) ) )。
1 ) x3 ) ) )。
1 ) x4 ) ) )。
卷积核和输入信号的第一次运算
1 )1×1 * w1 ) )。
1 )1×2 * w2 ) )。
1 )1×3 * w3 ) )。
第一次输出:=3
卷积核和输入信号的第二次运算
1 )1×2 * w1 ) )。
1 )1×3 * w2 ) )。
1 )1×4 * w3 ) )。
第二次输出:=3
因此,上述x4=[ 3,3 ],pytorch的验证结果如下。
argin-left:0cm;”>
假设上述其他代码不变,但是 padding = 1,只修改上述一行代码:
conv2 = nn.Conv1din_channels=1, out_channels=1, kernel_size=k, stride = 1, padding = 1 , bias = False)
计算流程如下:
输入
0padding)
1×1)
1×2)
1×3)
1×4)
0padding)
卷积核和输入信号的第1次运算
0 0 * w1)
1×1 * w2)
1×2 * w3)
第1次输出:∑=2
卷积核和输入信号的第2次运算
1×1 * w1)
1×2 * w2)
1×3 * w3)
第2次输出:∑=3
卷积核和输入信号的第3次运算
1×2 * w1)
1×3 * w2)
1×4 * w3)
第3次输出:∑=3
卷积核和输入信号的第4次运算
1×3 * w1)
1×4 * w2)
00 * w3)
第4次输出:∑=2
所以上述 x4 = [2,3,3,2],pytorch 验证结果如下:
假设上述代码保持不变,但是 stride = 2 ,只修改上述一行代码:
conv2 = nn.Conv1din_channels=1, out_channels=1, kernel_size=k, stride = 2, padding = 1 , bias = False)
输入
0padding)
1×1)
1×2)
1×3)
1×4)
0padding)
卷积核和输入信号的第1次运算
0 0 * w1)
1×1 * w2)
1×2 * w3)
第1次输出:∑=2
卷积核和输入信号的第2次运算
1×2 * w1)
1×3 * w2)
1×4 * w3)
第2次输出:∑=3
所以上述 x4 = [2,3],pytorch 验证结果如下:
码字儿不易,Buy Me A Coffee好押韵~~~~~)