假设输入特征图的尺寸为 (H x W),输入通道为 (C_in),输出通道为 (C_out),卷积核大小为 (k x k),那么普通卷积的参数量和计算量
普通卷积的参数量为:k×k×Cin×Cout+Coutk×k×Cin×Cout+Cout。
其中,k×k×Cin×Coutk×k×Cin×Cout 是权重的参数数量,CoutCout 是偏置的参数数量。这是因为每个卷积核的大小为 k×k×Cink×k×Cin,且共有 CoutCout 个卷积核,每个卷积核对应一个偏置项12。
普通卷积的计算量(只考虑乘法)为:Cout×Hout×Wout×(Cin×k×k)Cout×Hout×Wout×(Cin×k×k)。
其中,HoutHout 和 WoutWout 分别是输出特征图的高度和宽度,它们可以通过输入特征图的高度 HH、宽度 WW、卷积核大小 kk、步幅 SS 和填充 PP 来计算得出。具体地,Hout=⌊H−k+2PS⌋+1Hout=⌊SH−k+2P⌋+1,Wout=⌊W−k+2PS⌋+1Wout=⌊SW−k+2P⌋+1(这里 ⌊⋅⌋⌊⋅⌋ 表示向下取整)3。这个计算量表示的是为了得到输出特征图的每一个像素值,需要进行 Cin×k×kCin×k×k 次乘法操作,而特征图总共有 Cout×Hout×WoutCout×Hout×Wout 个像素。
如果同时考虑乘法和加法计算量,并且考虑偏置的情况,那么加法操作计算量会稍微复杂一些,但总体上与乘法计算量成正比3。因此,在实际应用中,通常只关注乘法计算量或者将乘法和加法计算量合并考虑
如果考虑加法计算量,普通卷积的计算量(包括乘法和加法)会相应增加,但通常可以通过与乘法计算量的比例关系来估算。
在卷积操作中,每个输出像素值都是通过输入特征图与卷积核进行点积(即乘法和加法组合)计算得到的。因此,除了乘法计算量外,还需要考虑加法计算量。不过,由于加法操作的计算复杂度远低于乘法,且在现代处理器中加法的执行速度通常比乘法快得多,所以在很多情况下,加法计算量并不