Posted on

使用model.summary()輸出參數Param計算過程

使用方式

使用keras構建深度學習模型,我們會通過model.summary()輸出模型各層的參數狀況,如下:

import tensorflow as tf

# 建立模型
model = tf.keras.Sequential()
model.add(tf.keras.layers.Conv2D(32, (3, 3), input_shape=(32, 32, 3)))
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(10))

# 顯示模型的摘要信息
model.summary()

輸出範例

Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #
=================================================================
conv2d (Conv2D)              (None, 30, 30, 32)        896
_________________________________________________________________
flatten (Flatten)            (None, 28800)             0
_________________________________________________________________
dense (Dense)                (None, 10)                288110
=================================================================
Total params: 288,006
Trainable params: 288,006
Non-trainable params: 0

參數意義

在這個輸出中,Total params 表示模型的總參數數量,可以用來反推模型的大小。請注意,模型的大小不僅僅是參數數量的函數,還可能受到訓練資料的大小、訓練次數等因素的影響。

Param就是參數的意思,也就是每層神經元的權重(w)個數。
怎麼算出來的?Param = (輸入維度+1) * 輸出的神經元個數,但是每個神經元都要考慮到有一個Bias,所以要再加上1。