首先,我们搭建一个神经网络,然后输出看一下参数个数
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输出了每层的参数个数,分别是2,16,18,三层总计36个参数
那么这些参数是如何确定的呢?
我们先来总结下规律
第一层,1个输入,1个输出,结果为2
第二层,1个输入,8个输出,结果为16
第三层,8个输入,2个输出,结果为18
规律不难找,参数个数=输入个数*输出个数+输出个数
其中的原因不难分析,每个神经元其实是在进行一个y= ax+b的计算,所以他有两个参数,一个是输入的权重a,一个是偏置b,如果输入有多个值,则存在多个权重a,所以一个神经元的参数个数是 输入个数+一个偏置,如果该层有多个输出,则整体参数个数为
输出个数 *(输入个数+1)=输入个数 * 输出个数+输出个数。
课后作业
1 查找use_bias参数,将Dense参数改为False,看看模型的参数数量是否有变化?
2 增加Dense的activation参数,看看模型的参数数量是否有变化?