1. 程式人生 > >lab4:VGG16

lab4:VGG16

準備工作:

(1)維度:

 

卷積維度 粉紅色最後的卷積結果矩陣維度=綠色矩陣維數-橙色矩陣維數+1

池化的最終的結論是要把原來的維度減少到1/n

padding:周圍維一圈0 => 粉=綠+2-3+1=綠 維數可以不減(在卷積核維數是3時)

 

(2)vgg 16結構

   附件的vgg16.txt

   Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) :3通道,每通道64個(64*3的矩陣),步長1,補01圈

  從矩陣可以看出並行和分塊的思路。

 

  nn.ReLU() 
  這個表示使用ReLU啟用函式,裡面有一個引數inplace,預設設定為False,表示新建立一個物件對其修改,也可以設定為True,表示直接對這個物件進行修改

  MaxPool2d (size=(2, 2), stride=(2, 2), dilation=(1, 1)) :pooling 相鄰2*2矩陣選最小值,步長2

 

(3)總結構:2+2+3+3+3+3=16

資料

 

   (下面省略了bias和RU,每次卷積核全連線都要啟用)

  (1)64*3(3*3)@ 3*1(224*224)=  64*1*(224*224)

(2)64*64(3*3)@ 64*1(224*224)= 64*1(224*224)

(3)=64*1(112*112)

  (4)128*64(3*3)@ 64*1(112*112)=128*1(112*112) 

(5)128*128(3*3)@ 128*1(112*112)=128*1(112*112)

(6)=128*1(56*56)

  (7)256*128(3*3)@ 128*1(56*56)=256*1(56*56)

(8)256*256(3*3)@ 256*1(56*56)=256*1(56*56)

(9)256*256(3*3)@ 256*1(56*56)=256*1(56*56)

(10)=256*1(28*28)

  (11)512*256(3*3)@ 256*1(28*28)=512*1(28*28)

(12)512*512(3*3)@ 512*1(28*28)=512*1(28*28)

(13)512*512(3*3)@ 512*1(28*28)=512*1(28*28)

(14)=512*1(14*14)

  (15)512*512(3*3)@512*1(14*14)=512*1(14*14)

(16)512*512(3*3)@512*1(14*14)=512*1(14*14)

(17)512*512(3*3)@512*1(14*14)=512*1(14*14)

(18)=512*1(7*7)= 25088*1

  (19)(4096*25088) @ (25088*1)= (4096*1)

  (20)(4096*4096)@(4096*1)=(4096*1)

  (21)(1000*4096)@(4096*1)=(1000*1)