【Fast Algorithms for Convolutional Neural Networks】论文笔记

这篇文章基于Winograd开创的最小滤波算法,介绍了一类新的卷积神经网络快速算法。
针对卷积计算方式而言,与直接卷积相比,该算法可以将卷积层的算术复杂度降低4倍。

算法部分

对于最小滤波算法而言,使用r维滤波器计算m个输出(称之为F(m,r))需要m+r-1次乘法计算。
在这里插入图片描述
标准计算而言的话,需要m×r次乘法计算。

对于1-D卷积:
输入x=[1,2,3,4],卷积核大小为3×1(r=3),k=[1,1,1]。
对于一个输出(m=1)而言,正常卷积步骤为:out=1×1+1×2+1×3=6 (包含3次乘法(1×3),2次加法)
F(1,3)=1+3-1=3(乘法操作数目不变)

对于2-D卷积:
卷积核大小为r×s,输出尺寸为m×n,原始的F(m,r)可以改写为F(m×n,r×s)
在这里插入图片描述
输入x=[[1,2,3,4],[1,2,3,4]],卷积核大小为3×1(r=3,s=1),k=[1,1,1]。
对于m×n个输出(m=2,n=1)而言,正常卷积步骤为:
out1=1×1+1×2+1×3=6
out2=1×1+1×2+1×3=6

(包含6(m×r=2×3=6)次乘法,4次加法)
F(2×1,3×1)=(2+3-1)(1+1-1)=4

具体计算部分

F(2,3)可以看成F(2×1,3×1),具体计算结果可用下面形式表示。
一共是6次乘法(4+2),11次加法(4+3+4(g0+g2只需计算一次))。

在这里插入图片描述
在这里插入图片描述
矩阵形式可以写为:

中间点乘表示逐元素相乘。
【Fast Algorithms for Convolutional Neural Networks】论文笔记_第1张图片
同理,F(m×m, r×r):
在这里插入图片描述
g是r×r的卷积核,d是(m+r−1)×(m+r−1)的输入。

F(3×3,2×2):
【Fast Algorithms for Convolutional Neural Networks】论文笔记_第2张图片
F(4×4,3×3):
【Fast Algorithms for Convolutional Neural Networks】论文笔记_第3张图片

你可能感兴趣的:(网络压缩,参数裁剪,神经网络,论文笔记)