完全家族,conv1d参数

=====================这个博客主要是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好押韵~~~~~)

 

 

 

 

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注