1. 程式人生 > 其它 >神經網路(model.summary())模型層的轉換與層引數詳解

神經網路(model.summary())模型層的轉換與層引數詳解

技術標籤:卷積神經網路神經網路tensorflow

簡單的卷積

from keras import layers 
from keras import models
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1))) 
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu')) 
model.add(
layers.MaxPooling2D((2, 2))) model.add(layers.Conv2D(64, (3, 3), activation='relu')) model.add(layers.Flatten()) model.add(layers.Dense(64, activation='relu')) model.add(layers.Dense(10, activation='softmax')) model.summary()

對應的架構

Layer (type)                  Output                Shape Param #
==
=============================================================== conv2d_1 (Conv2D) (None, 26, 26, 32) 320 _________________________________________________________________ max_pooling2d_1 (MaxPooling2D) (None, 13, 13, 32) 0 _________________________________________________________________ conv2d_2 (
Conv2D) (None, 11, 11, 64) 18496 _________________________________________________________________ max_pooling2d_2 (MaxPooling2D) (None, 5, 5, 64) 0 _________________________________________________________________ conv2d_3 (Conv2D) (None, 3, 3, 64) 36928 _________________________________________________________________ flatten_1 (Flatten) (None, 576) 0 _________________________________________________________________ dense_1 (Dense) (None, 64) 36928 _________________________________________________________________ dense_2 (Dense) (None, 10) 650 ================================================================= Total params: 93,322 Trainable params: 93,322

卷積後的輸出計算

conv2d_1 (Conv2D) 輸入為(28,28,1),卷積核尺寸為(3,3),過濾器個數為32,步長預設(1, 1),所以:

Output:      (輸入尺寸-卷積核尺寸+2xpadding)/步長+1
		   	  (28-3+2x0)/1+1=26--->(26,26,32)
Shape Param: 卷積核尺寸*2 x 通道數 x 過濾器數+過濾器數
               W=3*2x1x32=288,
			   B=32,
			   Param=288+32=B+W=320

池化後的輸出計算

conv2d_1 (Conv2D)為(26,26,32),經過池化大小為(2,2),步長預設: If None, it will default to pool_size.

輸出尺寸: (輸入尺寸-池化尺寸)/步長+1
		   (26-2)/2+1=13---->(13,13,32)

全連線層

1.卷積後的全連線成的引數計算
全連線的前層conv2d_3 (Conv2D) (None, 3, 3, 64)
全連線層的神經元數 64

Shape Param:前層的尺寸*2x前層的核數x全連線層的神經元數+全連線層的神經元數
		     3*2 x 64 x 64 + 64= 36928

2.隱藏層的下一層全連線成的引數計算
前層神經元數:64
當前神經元數:10

Shape Param:前層神經元數 x 當前神經元數 + 當前神經元數
					64 x 10 + 10=650

Total params

為所以引數的總和:320 + 18496 +36928 + 36928 +650 = 93322