params量計算公式:(kh
∗kw∗
cin)
∗cou
t(k_h*k_w*c_in )*c_out
(kh∗k
w∗c
in)
∗co
utflops計算公式:(kh
∗kw∗
cin∗
cout
)∗(h
out∗
wout
)(k_h*k_w*c_in*c_out )*(h_out*w_out)
(kh∗k
w∗c
in∗
cou
t)∗(
hou
t∗wo
ut)
其中k
hk_h
kh和k
wk_w
kw代表了kernel的input_size,cin
c_in
cin
是input feature map的channel數,cou
tc_out
cou
t是output feature map的channel數, hou
t和wo
ut
h_out和w_out
hout和
wou
t分別代表了output feature map的size。
params量計算公式:cin
∗cou
tc_in*c_out
cin∗c
out
flops計算公式:cin
∗cou
tc_in*c_out
cin∗c
out
flops: floating point operations per second.每秒的浮點運算次數。
madds: 即maccs(multiply-accumulate operations):先乘起來再加起來的運算次數。
例如:y=w
[0]∗
x[0]
+w[1
]∗x[
1]+w
[2]∗
x[2]
+...
+w[n
−1]∗
x[n−
1]
y = w[0]*x[0] + w[1]*x[1] + w[2]*x[2] + ...+ w[n-1]*x[n-1]
y=w[0]
∗x[0
]+w[
1]∗x
[1]+
w[2]
∗x[2
]+..
.+w[
n−1]
∗x[n
−1]w 和 x 都是向量,y 是標量。上式是全連線層或卷積層的典型運算。一次乘-加運算即一次乘法+一次加法運算,所以上式的 maccs 是n 。
不過可以看到,加法運算的次數並非 n 而是 n-1 。但考慮 maccs 時可以模擬演算法複雜度估算的 big-o ,即結果可以是近似的。
而換到 flops 的情況,點積做了 2n-1 flops,即 n-1 次加法和 n 次乘法。可以看到,maccs 大約是 flops 的一半。
乙個mflops(megaflops)等於每秒一百萬(=10^6)次的浮點運算
乙個gflops(gigaflops)等於每秒十億(=10^9)次的浮點運算
乙個tflops(teraflops)等於每秒一萬億(=10^12)次的浮點運算
深度學習網路模型的運算複雜度、空間占用和記憶體訪問情況計算
衡量模型的快慢不僅僅是參數量、計算量的多少,還有記憶體訪問的次數。
3模型大小 混合精度對模型訓練和推理的影響
計算機使用0 1來標識資訊,每個0或每個1代表乙個bit。資訊一般會以下面的三種形式表示 1 字串 字串的最小單元是char,每個char佔8個bit,也就是1個byte。比如字串 abc 這三個字元組成的串占用的儲存空間 儲存空間 1x3 3 bytes 24 bits 2 整數整數包括int4 ...
Apache POI Excel 速度相關
1.poi針對目前存在的兩種版本的excel有不同的實現方式.而對於相同版本的excel又分為dom解析和sax解析兩種.而這兩種在記憶體使用,效能各方面均有不同.2.03和07版xls區別?b.行數限制 07版 xssfworkbook 基於usermodel 公升級版 sxssfworkbook...
Pytorch網路訓練模型轉成C 推理執行
顯著性檢測網路模型是基於pytorch深度學習框架進行搭建並參與訓練的,在實際應用和生產中,由於要滿足低延遲和嚴格部署要求,通常選用c 來進行推理過程。這裡的顯著圖推理模型c 轉換過程主要由以下幾個步驟組成 將pytorch網路模型轉換為torch script,並序列化為乙個檔案 配置編譯執行環境...