在深度學習的發展過程中,有意無意中,很多創新點都與改善模型計算複雜度密切相關。
因而,本文對cnn的時間和空間複雜度做以分析。
首先,明確下flops和flops的區別:
卷積層:
ci=input channel, k=kernel size, hw=output feature map size, co=output channel.
2是因為乙個mac算2個operations。
不考慮bias時有-1,有bias時沒有-1。
上面針對乙個input feature map,沒考慮batch size。
理解上面這個公式分兩步,括號內是第一步,計算出output feature map的乙個pixel,然後再乘以hwco拓展到整個output feature map。括號內的部分又可以分為兩步,
全聯接層:
i=input neuron numbers, o=output neuron numbers.
2是因為乙個mac算2個operations。
不考慮bias時有-1,有bias時沒有-1。
分析同理,括號內是乙個輸出神經元的計算量,拓展到o了輸出神經元。
神經網路時間複雜度
拿乙個簡單的三層bp神經網路來說好了,假設每層神經元數量分別為n1,n2,n3。拿乙個樣本 n1 1 進行前饋計算,那麼就要進行兩次矩陣運算,兩次矩陣乘法 實際上是向量和矩陣相乘 分別要進行n1 n2 和 n2 n3次計算,由於輸入層和最終輸出層結點數量 n1和n3 是確定的,所以可以視為常量,中間...
時間複雜度和空間複雜度
同一問題可用不同演算法解決,而乙個演算法的質量優劣將影響到演算法乃至程式的效率。演算法分析的目的在於選擇合適演算法和改進演算法。乙個演算法的評價主要從時間複雜度和空間複雜度來考慮。1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能...
時間複雜度和空間複雜度
1 時間複雜度 1 時間頻度乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數多...