Page 145 - 《软件学报》2021年第11期
P. 145
宋冰冰 等:自动化张量分解加速卷积神经网络 3471
对卷积核 K 进行 CP 分解,如公式(2)所示.
R
s
K ( , , , ) t = K (i x α∑ x −+ ,) r K ( j y α y − + , ) r K ( ,) r K t ( , ) r (2)
s
ij s
t
r= 1
x
y
t
s
K ,K ,K ,K 表示 CP 分解后因子矩阵,张量(矩阵)大小分别是 d 1 ×R,d 2 ×R,S×R,T×R.将公式(2)代入卷积操作公
式(1)中,得到 CP 分解替换原卷积公式(3).
R ⎛ x δ+ ⎛ y δ+ ⎛ S ⎞ ⎞ ⎞
s
Y ( , , ) t ∑ xy = K ( , ) r ⎜ t t ⎜ K (i x α x −+ ,) r ⎜ K ( j y α y − + , ) r ⎜ ⎜ K ( ,) r X ( , , ) s ⎟ ∑ i j ⎟∑ ⎟ ⎟ ∑ ⎟ (3)
s
r= 1 ⎝ i x δ = − j y δ = − ⎝ ⎝ s= 1 ⎠ ⎠ ⎠
通过公式(3),CP 分解后,4 层小卷积操作如公式(4)~公式(7)所示.
S
=
s
Y (, , ) r ∑ K s ( , ) r X ( , , ) s (4)
i j
s
ij
s= 1
y δ+
Y sy = ∑ K y Y s (5)
(, , )iy r ( j y α−+ , ) ( , , )r i j r
jy δ=−
x δ+
Y syx = ∑ K x Y sy (6)
(, , )x yr (i x α−+ , ) ( , , )r i yr
jx δ=−
R
=
Y (, , )x yt ∑ K ( , ) ( , , )t r Y syx (7)
t
x y r
r= 1
CP 分解加速卷积层具体流程如图 2 所示(以分解 1 层卷积操作为例).
• Step 1:对原神经网络的卷积核进行 CP 分解,分解成 4 个维度的因子矩阵形式.
• Step 2:将分解后的因子矩阵增加缺少的维度,组合成新卷积核的参数.
• Step 3:组合成新卷积核的参数赋值给新的卷积核.
• Step 4:使用新生成的 4 层卷积操作来代替原神经网络卷积层操作.
Fig.2 CP decomposition accelerate convolution layer
图 2 CP 分解加速卷积层
替换后的输出近似原输出 Y,如图 3 所示.
• 首先对输入 X 在输入通道上使用卷积核 Ks 卷积,卷积输出 Ys,将通道 S 降为 R,减少了输入通道,加快
卷积速度.
• 其次,对通道 S 卷积后的输入 Ys 使用 Ky 卷积,同理再进行 Kx 卷积,卷积后输出 Ysyx.不同于原始卷积,
原始卷积对空间维度宽高(xy)一起做卷积操作,这里是在通道数不变,分别对高(y)、宽(x)进行卷积.
• 最后,对 Ysyx 使用 Kt 卷积核完成通道数 R 到 T 的卷积,加上初始卷积层的偏执 b.