深度学习(二):Keras初探:BP神经网络

最近在学习Keras的使用,在此整理一下相关内容。方式方法上,我想通过使用Keras构建多种常见神经网络来逐步理解Keras,这样的话,通过常见、容易理解的神经网络,一步步深入Keras使用。子曰:由也升堂矣,未入于室也。

BP神经网络使用误差逆向传播算法训练的多层前馈网络,是目前应用非常广泛的神经网络。按照Keras的角度,神经网络的构建可以分为两部分:建立神经网络模型和训练神经网络模型。对于BP神经网络,网络模型为多层前馈网络,cost function采用平方和误差函数,训练采用梯度下降法。

首先,通过Keras构建前馈神经网络,这部分主要采用Dense层来完成。Dense层是最简单,也是最常用的全连接网路层。
初步了解Keras,推荐此网站Keras新手指南

Dense层基本参数:

  1. units:层输出维度
  2. activation:激活函数
  3. init:权值初始化方法
  4. input_shape输入张量(nb_samples, input_dim)

综上,通过Dense层构建前馈神经网络的方法如下:

#使用层次模型 
model = Sequential()
#输入层与第一个隐层同时建立,输入层13维,第一个隐层有10个神经元,激活函数使用sigmoid
model.add(Dense(10, activation='sigmoid', input_dim=13))
#输出层有3个神经元,激活函数使用softmax
model.add((Dense(3, activation='softmax'))

这样我们就构建了基本的前馈神经网络,但是进行编译,也就是对学习过程进行配置。编译一般需要设置3个参数:

  1. 优化器optimizer:神经网络的学习方法,例如SGD随机梯度下降法。
  2. 损失函数loss:神经网络训练时试图最小化的目标函数,例如MSE误差平方和。
  3. 评价指标

综上,通过前馈神经网络编译设置如下:

#设置SGD随机最速下降法的参数
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
#设置优化器、损失函数和评价指标
model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])

另外,构建好神经网络后可以通过model.summary()获取模型详细信息。之后,可以通过model.fit()实现模型训练。

#设置训练集,epochs训练轮数,batch_size梯度下降每个批的个数,validation_data设置验证集
model.fit(train_x_scaled, y_train, epochs=20, batch_size=10,validation_data=(test_x_scaled, y_test))

训练完成之后,就可以验证模型在测试集上的误差。

score = model.evaluate(test_x_scaled, y_test, batch_size=10)

完整的程序和数据:下载
欢迎访问我的博客monte3card’s blog

    原文作者:monte3card
    原文地址: https://www.jianshu.com/p/31a50fae31ed
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞