1.fast convolution
原理:用非耗時運算操作(如加法)替代耗時運算操作(如乘法)達到減少算法時間度的。
例子:通過複數乘法減少乘法時間複雜度
假設:
將該乘法式表示爲矩陣形式,其需要4個乘法和2個加法。將等式轉變後變成3個乘法和5個加法
轉變後的等式轉變爲矩陣形式,它的係數矩陣能夠被分解爲 2X3(C) , 3X3(H) 和 3X2(D) 的矩陣:
2. 多項式乘法與卷積
多項式 h(x) 與 g(x) 相乘,假設 h(x) 與 g(x) 分別爲:
將多項式看做是以 ,,... 爲基的空間向量,該多項式乘積就可以寫爲矩陣卷積形式
示例:存在兩個多項式
h(x) 與 g(x) 對應的空間向量爲:
h=[1,1,1,1];
g=[1,1,1];
h(x)*g(x) 得到的多項式的空間向量爲上兩向量的卷積:
1 2 3 3 2 1
3.Winograd Algorithms
對於一維卷積,當輸出爲m,卷積核長度爲r時,需要乘法數量爲:
將一維卷積擴展到二維,如果輸出維mxn,卷積核維rxs,需要乘法數量爲:
3.1F(2X2,3X3)
直接計算一維卷積F(2X3)需要2x3=6次乘法。
輸入:[ d0, d1, d2, d3], 卷積核爲 [g0,g1,g2],沒有padding,步長爲1,寫成矩陣形式爲:
即:
這種計算方式需要2+3-1=4次乘法,4次加法,還有可以預計算的3次加法和2次乘法(卷積核默認爲已知項)
將這種算法寫成矩陣形式
表示點乘,對於F(2,3),以上矩陣分別爲:
擴展爲二維卷積的形式: