一维卷积和二位卷积的区别

数值上的区别:1d只需要输入和输出3维数组(batch,channel,inputDim)

                        2d需要输入输出4维数组(batch,channel,inputH,inputW)


计算上的区别:1d只在inputDim这个维度上计算,例子:speaker Recognition中每个segment有39维*300frame的数据,则只在时间维度上计算,即这里应该看成39个通道,每个通道300维数据,每个1d卷积操作只在300frames上面进行

                        2d要在inputH,inputW两个维度上面同时计算卷积,例子:speaker Recognition中每个segment有39维*300frame的数据,则会同时在时间和频率维度上计算卷积,即这里的39和300两个维度会同时计算卷积(之所以说39维是频率维度,是因为MFCC等特征是咋傅里叶变换之后得到的)

意义上的区别:1d卷积的一张“图”即为一个向量,这里即为300维数据,39个通道即相当于组成39张“图”,实际上,整个39*300才真正意义上算一张图,所以1d卷积只会在一张真正意义上的图上面操作,不会产生多张真正意义上的图。

                        2d卷积的一张图就是真正意义上的图了,因为它有宽和高两个维度作为操作对象,即这里的39*300都是被卷积的维度,此时通道数量为1,所以在2d卷积中产生的多个通道即对应着多张真正意义上的图。而不是像1d卷积那样用于只有真正意义上的一张图。


注意:

        对于1d卷积而言,39维*300frame的输入数据如上所述,39维为39个通道数,300为需要被卷积的时间轴上数值,所以在pytorch输入网络中时,39应该放到倒数第二个维度,300应该是最后一个维度,此时的1d卷积才是对300这个维度上面的卷积,而对于2d卷积则可以不用区分,因为两个维度都会公平地被卷积。

当然,在平时处理时,2d卷积都是把300放在前面,39放在后面的。所以转换成1d卷积时记得先permute一下维度才输入1d卷积。


说明:

        上述叙述只为本人自己好理解,如果给别人造成混乱,就还是别看我的了。。。。。咳咳


猜你喜欢

转载自blog.csdn.net/qq_27292549/article/details/80483389