--- <储存量> ---
对某一层卷积层,卷积参数数量为:
P = C(上一层卷积数量) * Kh(卷积核高) * Kw(卷积核宽) * N(卷积核数量)
分解后则是
P = P1+P2 = C(上一层卷积数量) * Kh(卷积核高) * D(分解核数量) + D(分解核数量) * Kw(卷积核宽) * N(卷积核数量)
所以只有当
P1 + P2 < P
才有低秩分解能够优化储存性能的说法。
在上述例子中若希望分解conv1优化储存性能,
则有 D * ( 3 * 3 + 16 * 3) < 3 * 3 * 3 * 16
所以 D < 7.58 即分解层的卷积核不超过7个
--- <计算量> ---
对于某一卷积层,卷积计算量为:
T = C(上一层卷积数量) * Kh(卷积核高) * Kw(卷积核宽) * N(卷积核数量) * Ho(输出特征图高度) * Wo(输出特征图宽度)
分解后则是
T1 = C(上一层卷积数量) * Kh(卷积核高) * D(分解层卷积核数量) * Ho(输出特征图高度) * W(原特征图宽度)
T2 = D(分解层卷积核数量) * Kw(卷积核宽) * N(原卷积核数量) * Ho(输出特征图高度) * Wo(输出特征图宽度)
令 T1+T2 < T, 则计算量减少
设 r = T/(T1+T2), 得
r = C * Kh * Kw * N * Wo / (C * Kh * D * W + D * Kw * N * Wo )
一般实际应用中常用 Kh=Kw=3, 配合padding=1的话 则得
r = 3 * C * N / (C * D + D * N )
假设上述例子中,希望分解conv1使得计算量减半,则r=2,应设置D为
D = 3 * 3 *16 / (3 * 2 + 16 * 2) = 3.7 约等于 4 即设置分解层为4核卷积