深度學習模型 演算法的運算複雜度分析

2021-10-05 19:31:25 字數 1339 閱讀 5783

分四大部份:

ref:

原文:



翻譯:

影響記憶體占用的主要因素:resnet-50為例network architecture圖

輸入image資料

256*256的彩色影象:256*256*3*1 byte= 192kb

模型自身conv.等使用到的params引數

resnet

-50有26 million引數,佔記憶體:26m * 32 bit = 99mb

模型裡各layer計算產生的中間變數(memory),也就是輸入影象在計算時每一層產生的輸入和輸出feature map

resnet-50有16 million響應 (沒推衍怎麼算的),佔記憶體:16m*32bit = 64mb

做mini-batch訓練時batch size的影響

resnet-50,mini-batch=16,各層相應佔記憶體:64mb*16= 1gb

bp演算法:如果用bp演算法(back propagation)時中間變數部份還要*2~~!!!

所以一張256*256彩色影像做fp的inference時=192kb+99mb+64mb就還好,訓練時加上batch因素就瞬間變記憶體怪獸爆掉

ref:

yolo v3 中間層變數分析,這要推導出中間變數占用記憶體有點難..........

演算法的複雜度 演算法的時間複雜度和空間複雜度

在一次筆試題目中,發現了自己對於演算法的時間複雜度問題上並沒有完全清晰這個概念和計算方法,故上網尋找到比較好的詳細介紹來學習。演算法的時間複雜度和空間複雜度合稱為演算法的複雜度。1.時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也...

演算法的複雜度 時間複雜度與空間複雜度

通常,對於乙個給定的演算法,我們要做 兩項分析。第一是從數學上證明演算法的正確性,這一步主要用到形式化證明的方法及相關推理模式,如迴圈不變式 數學歸納法等。而在證明演算法是正確的基礎上,第二步就是分析演算法的時間複雜度。演算法的時間複雜度反映了程式執行時間隨輸入規模增長而增長的量級,在很大程度上能很...

演算法學習 演算法的時間複雜度與空間複雜度

乙個演算法執行所耗費的時間,從理論上來說是不能計算出來的,必須通過上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數多,它花費時間就多。...