Deep Learning---caffe模型参数量(weights)计算
Draw_convnet
這幅圖是通過(guò)開(kāi)源的工具draw_convnet(https://github.com/gwding/draw_convnet)生成的。在清楚整個(gè)前向計(jì)算網(wǎng)絡(luò)中的每一個(gè)層的輸入輸出以及參數(shù)設(shè)置后可以自己手動(dòng)畫出計(jì)算圖出來(lái),對(duì)于參數(shù)量計(jì)算就很直觀了。
feature map大小計(jì)算
輸入:N0*C0*H0*W0 輸出:N1*C1*H1*W1 輸出的feature map大小: H1=(H0+2×pad?kernel_size) / stride+1 W1=(W0+2×pad?kernel_size) / stride+1 當(dāng)輸入的H0 == W0時(shí),公式可以簡(jiǎn)化為: H1=W1=(h + 2xpad - kernel_size) / stride + 1 注:當(dāng)stride為1時(shí),若pad=(kernel_size?1) / 2,那么經(jīng)過(guò)計(jì)算后的feature map大小不變以LeNet-5為例
下面是一個(gè)多通道圖像的輸入LeNet-5網(wǎng)絡(luò)前向計(jì)算模擬圖:
- 網(wǎng)狀立體格子表示kernel,其他顏色方圖表示feature map(Input表示輸入層,可以看做特殊的feature map)
- 一個(gè)kernel對(duì)應(yīng)一個(gè)feature map
- 參數(shù)量主要為kernel大小
- 每個(gè)kernel帶一個(gè)bias
整個(gè)網(wǎng)絡(luò)占據(jù)權(quán)重的為Convolution/Innerproduct 兩層,分別計(jì)算參數(shù)量為,:
C1: 5 x 5 x 20 = 500,5x5卷積核, 20個(gè)feature map輸出,20個(gè)kernel C2: 20x 5 x 5 x 50 = 25000 ,20維度輸入,則20x5x5 kernel,50個(gè)feature map輸出,即相當(dāng)于20通道的圖像輸入,則需要20x5x5的kernel來(lái)卷積乘,50個(gè)這樣的卷積核操作得到50個(gè)feature map,50個(gè)kernel F1: 50x4x4x500 = 400000,50維度特征圖輸入,全連接,每個(gè)點(diǎn)做卷積乘,則kernel大小為50x4x4,共500個(gè)feature map輸出,500個(gè)kernel F2 : 500x1x1x10 = 5000,500維度特征圖輸入,全連接,kernel大小為500x1x1,共10個(gè)feature map輸出,10個(gè)kernel用4bytes的float類型來(lái)存儲(chǔ)參數(shù),則總的參數(shù)量大小為:
500 + 25000 + 400000 + 5000 + (20 + 50 + 500 + 10) = 431080字節(jié)數(shù)為:
431080 x 4 = 1724320 ≈ 1683.90625kb ≈ 1.64M
對(duì)比實(shí)際LeNet-5網(wǎng)絡(luò)基于caffe訓(xùn)練出來(lái)的模型大小為:1.64 MB (1,725,025 字節(jié)),基本接近,因?yàn)槟P椭锌赡苓€帶有附加特性參數(shù)。
參考資料:
http://blog.csdn.net/cheese_pop/article/details/51955915
http://timdettmers.com/2015/03/26/convolution-deep-learning/
總結(jié)
以上是生活随笔為你收集整理的Deep Learning---caffe模型参数量(weights)计算的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Deep Learning---py-f
- 下一篇: caffe基础(8):draw_net.