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

作者: monte3card | 来源:发表于2017-06-10 00:14 被阅读0次

    最近在学习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

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/rphqqxtx.html