Alex Апрель 26, 2020 в 14:40
1) обычная сертка
K×K проходит
N×N за
(N−K+1)2 шагов, каждый из которых состоит из
K2 операций, значит обычная сверта потратит (для простоты по 1 слою, не pointwise же)
O(K2(N−K+1)2)
2) depthwise-separable (ds), о которой я первый раз прочитал 5 мин назад, имеет матрицу с одним не нулевым собственным значением, соответсвенно представляется левым и правым собственными векторами размером
1×K. Для правого вертора проходов будет
K×(N−K+1)×N
левый вектор пройдет по его результатам за
K×(N−K+1)2
общее соответсвенно
O(K×(N−K+1)(2N−K+1))
Итог:
conv : ds ---
O(K×(N−K+1)):O(2N−K+1)