首先栖袋,我們搭建一個(gè)神經(jīng)網(wǎng)絡(luò)茂附,然后輸出看一下參數(shù)個(gè)數(shù)
from keras.models import Sequential
from keras.layers import Dense
import numpy as np
import random
model = Sequential()
model.add(Dense(1,input_dim =1))
model.add(Dense(8))
model.add(Dense(2))
model.compile(loss='mean_absolute_error', optimizer ='adam')
model.summary()
輸出如下
可以看出正蛙,keras輸出了每層的參數(shù)個(gè)數(shù),分別是2,16,18营曼,三層總計(jì)36個(gè)參數(shù)
那么這些參數(shù)是如何確定的呢乒验?
我們先來(lái)總結(jié)下規(guī)律
第一層,1個(gè)輸入蒂阱,1個(gè)輸出锻全,結(jié)果為2
第二層,1個(gè)輸入录煤,8個(gè)輸出鳄厌,結(jié)果為16
第三層,8個(gè)輸入妈踊,2個(gè)輸出了嚎,結(jié)果為18
規(guī)律不難找,參數(shù)個(gè)數(shù)=輸入個(gè)數(shù)*輸出個(gè)數(shù)+輸出個(gè)數(shù)
其中的原因不難分析响委,每個(gè)神經(jīng)元其實(shí)是在進(jìn)行一個(gè)y= ax+b的計(jì)算新思,所以他有兩個(gè)參數(shù),一個(gè)是輸入的權(quán)重a赘风,一個(gè)是偏置b夹囚,如果輸入有多個(gè)值,則存在多個(gè)權(quán)重a,所以一個(gè)神經(jīng)元的參數(shù)個(gè)數(shù)是 輸入個(gè)數(shù)+一個(gè)偏置邀窃,如果該層有多個(gè)輸出荸哟,則整體參數(shù)個(gè)數(shù)為
輸出個(gè)數(shù) *(輸入個(gè)數(shù)+1)=輸入個(gè)數(shù) * 輸出個(gè)數(shù)+輸出個(gè)數(shù)。
課后作業(yè)
1 查找use_bias參數(shù)瞬捕,將Dense參數(shù)改為False鞍历,看看模型的參數(shù)數(shù)量是否有變化?
2 增加Dense的activation參數(shù)肪虎,看看模型的參數(shù)數(shù)量是否有變化劣砍?