KERAS 多元感知器–建立模型

我们将建立下列多层感知器,输入层x共有784个神经元,隐藏层h共有256个神经元,输出层y共有10个神经元.我们将使用下面的程序代码建立多层感知器模型
1.导入所需模块

from keras.models import Sequential
from keras.layers import Dense
2.建立Sequential模型
建立一个线性堆叠模型,后续只需要使用model.add()方法将各个神经网络层加入模型即可.

model = Sequential()
3.建立输入层与隐藏层
以下程序代码将输入层与隐藏层加入模型,使用model.add方法加入Dense神经网络层.dense神经网络层的特色是:所有上一层与下一层的神经元都完全连接

model.add(Dense(units=256,input_dim=784,kernel_initializer='normal',activation='relu'))
 
units=256 定义隐藏层神经元个数为256
input_dim=784 设置输入层神经元个数为784
kernel_initializer='normal' 使用normal distribution正态分布的随机数来初始化weight和bias
activation='relu' 定义激活函数为relu
4.建立输出层
使用下面的程序代码建立输出层,使用model.add方法加入Dense神经网络层,共有10个神经元,对应0~9个数字.并且使用softmax激活函数进行转换,softmax可以将神经元的输出转换为预测每一个数字的概率

model.add(Dense(units=10,kernel_initializer='mormal',activation='softmax'))
 
units=10 定义输出层神经元个数为10
kernel_initializer='mormal' 使用normal distribution正太分布的随机数来初始化weight和bias
activation='softmax' 定义激活函数为softmax
5.查看模型的摘要

print(model.summary())
 
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense_1 (Dense)              (None, 256)               200960    
_________________________________________________________________
dense_2 (Dense)              (None, 10)                2570      
=================================================================
Total params: 203,530
Trainable params: 203,530
Non-trainable params: 0
_________________________________________________________________
None
隐藏层共256个神经元
输出层共10个神经元
6.查看模型的摘要param
模型的摘要还有param字段,以上每一层param都是超参数.我们需要通过反向传播算法更新神经元的权重和偏差:
建立输入层与隐藏层的公式如下:
h1=relu(x*w1+b1)
建立隐藏层与输出层的公式如下:
y=softmax(h1*w2+b2)
所以每一层param计算方式如下:
param=(上一层神经元数量)x(本层神经元数量)+(本层的神经元数量)
隐藏层param为:784*256+256=200960
输出层的param为:256*10+10=2570
所以全部必须训练的超参数是每一层param的总和,计算方式如下:
200960+2570=203530