Ваш ответ на вопрос

Комментарии

Alex Апрель 26, 2020 в 14:40

1) обычная сертка K×KK\times K проходит N×NN\times N за (NK+1)2(N-K+1)^2 шагов, каждый из которых состоит из K2K^2 операций, значит обычная сверта потратит (для простоты по 1 слою, не pointwise же) O(K2(NK+1)2)O(K^2(N-K+1)^2) 2) depthwise-separable (ds), о которой я первый раз прочитал 5 мин назад, имеет матрицу с одним не нулевым собственным значением, соответсвенно представляется левым и правым собственными векторами размером 1×K1\times K. Для правого вертора проходов будет K×(NK+1)×NK\times(N-K+1)\times N левый вектор пройдет по его результатам за K×(NK+1)2K\times (N-K+1)^2 общее соответсвенно O(K×(NK+1)(2NK+1))O(K\times (N-K+1)(2N-K+1)) Итог: conv : ds --- O(K×(NK+1)):O(2NK+1)O(K\times (N-K+1)) : O(2N-K+1)