Keras多层感知器识别手写数字

上一篇完成“多层感知器模型”,本篇使用模型做识别。

1.进行数据预处理,上一篇有做。包括:

  feature预处理(将28x28的数字图形以reshape转换成784个float数)

  label预处理(将实际数字进行One-Hot Encoding)

2.建立Sequential模型

from keras.models import Sequential
from keras.layers import Dense
#1.建立Sequential模型
model = Sequential()
#2.建立“输入层”与“隐藏层”,使用model.add方法加入Dense神经网络层(所有上一层与下一层神经元都完全连接)
model.add(Dense(units=256,input_dim=784,kernel_initializer='normal',activation='relu'))
#3.建立“输出层”,使用model.add方法加入Dense神经网络层
model.add(Dense(units=10,kernel_initializer='normal',activation='softmax'))
#4.查看模型的摘要
print(model.summary)

   说明:1.建立Sequential模型,线性堆叠模型,后续只需要model.add方法将各个神经网络层加入模型。

              2.建立“输入层”与“隐藏层”,使用model.add方法加入Dense神经网络层(所有上一层与下一层神经元都完全连接),                       units是隐藏层神经元个数,input_dim是输入层神经元个数,kernel_initializer是使用normal distribution正态分布的                      随机数来初始化权重偏差,activation是定义激活函数是relu.

              3.建立“输出层”,使用model.add方法加入Dense神经网络层,units是输出层神经元个数,k意义相同,activation是定                   义激活函数为soft

              4.查看模型摘要,打印如下:               

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense_11 (Dense)             (None, 256)               200960    
_________________________________________________________________
dense_12 (Dense)             (None, 10)                2570      
=================================================================
Total params: 203,530
Trainable params: 203,530
Non-trainable params: 0
_________________________________________________________________
None

可以看出隐藏层256个神经元(因为输入和输出一起建立的所以没有显示输入),输出层10个神经元 

param的200960是784X256+256=200960,2570是256x10+10=2570,2570+200960=203530

以上每一个param都是超参数,输入层与隐藏层公式:h1=relu(w1x+b1),隐藏层与输出层:h2=softmax(w2h1+b2)

所以每一层param计算公式为:param=(上一层神经元数量)X(本层神经元数量)+(本层神经元数量)

3.进行训练。

#建立show_train_history显示训练过程
import matplotlib.pyplot as plt
def show_train_history(train_history,train,validation):
    plt.plot(train_history.history[train])
    plt.plot(train_history.history[validation])
    plt.title('Train History')
    plt.ylabel(train)
    plt.xlabel('Epoch')
    plt.legend(['train','validation'],loc='upper left')
    plt.show()

#画出准确执行结果
show_train_history(train_history,'acc','val_acc')

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值