深度学习(二):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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 亲子共读day174 月初加班,加班,加班!好整齐,值得庆幸的是晚上加也就三天而矣,要是出来的报表数据很漂亮,还能...
    洁儿_42cb阅读 3,301评论 0 1
  • 绽放梦幻色调!benefit新推超美蒲公英蜜粉 最近benefit宣佈即将推出新款蒲公英胭脂蜜粉,梦幻的配色和设计...
    ponette阅读 2,325评论 0 0
  • 十岁没钱,那很正常; 三十岁没钱,可能你不够勤奋,需要更大的努力; 四十岁没钱,只能自己找原因。 华人首富李嘉诚说...
    志彤妈妈阅读 780评论 0 0
  • 若有一天 我躺在冰冷的棺木里 潮湿的泥土拥抱着我 你会不会 在泥土上放一朵玫瑰 你会不会 轻抚我的墓碑 说 我来了...
    倪永孝阅读 1,196评论 1 0
  • 我不是一个热情的人,我不会对什么事都有情相应。 我是一个性格不温不火的人,不会大惊小怪,不会花容失色,不会让自己很...
    巧合的阅读 5,749评论 0 2