Keras实现简单BP神经网络
BP 神经网络的简单实现
from keras.models import Sequential #导入模型
from keras.layers.core import Dense #导入常用层
train_x,train_y #训练集
test_x,text_y #测试集
model=Sequential() #初始化模型
model.add(Dense(3,input_shape=(32,),activation='sigmoid',init='uniform'))) #添加一个隐含层,注:只是第一个隐含层需指定input_dim
model.add(Dense(1,activation='sigmoid')) #添加输出层
model.compile(loss='binary_crossentropy', optimizer='sgd', metrics=['accuracy']) # 编译,指定目标函数与优化方法
model.fit(train_x,train_y ) # 模型训练
model.evaluate(test_x,text_y ) #模型测试
常用层
常用层对应于core模块,core内部定义了一系列常用的网络层,包括全连接、激活层等
Dense层
keras.layers.core.Dense(units, activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)
Dense就是常用的全连接层,所实现的运算是output = activation(dot(input, kernel)+bias)
。其中activation
是逐元素计算的激活函数,kernel
是本层的权值矩阵,bias
为偏置向量,只有当use_bias=True
才会添加。
如果本层的输入数据的维度大于2,则会先被压为与kernel
相匹配的大小。
#example
# as first layer in a sequential model:
| model = Sequential()
| model.add(Dense(32, input_shape=(16,)))
| # now the model will take as input arrays of shape (*, 16)
| # and output arrays of shape (*, 32)
|
| # after the first layer, you don't need to specify
| # the size of the input anymore:
| model.add(Dense(32))
Keras主要包括14个模块,本文主要对Models、layers、Initializations、Activations、Objectives、Optimizers、Preprocessing、metrics共计8个模块分别展开介绍。
1. Model
包:keras.models
这是Keras中最主要的一个模块,用于对各个组件进行组装
eg:
from keras.models import Sequential
model=Sequential() #初始化模型
model.add(...) #可使用add方法组装组件
2. layers
包:keras.layers
该模块主要用于生成神经网络层,包含多种类型,如Core layers、Convolutional layers等
eg:
from keras.layers import Dense #Dense表示Bp层
model.add(Dense(input_dim=3,output_dim=5)) #加入隐含层
3. Initializations
包:keras.initializations
该模块主要负责对模型参数(权重)进行初始化,初始化方法包括:uniform、lecun_uniform、normal、orthogonal、zero、glorot_normal、he_normal等
详细说明:http://keras.io/initializations/
eg:
model.add(Dense(input_dim=3,output_dim=5,init='uniform')) #加入带初始化(uniform)的隐含层
4. Activations
包:keras.activations、keras.layers.advanced_activations(新激活函数)
该模块主要负责为神经层附加激活函数,如linear、sigmoid、hard_sigmoid、tanh、softplus、relu、 softplus以及LeakyReLU等比较新的激活函数
详细说明:http://keras.io/activations/
eg:
model.add(Dense(input_dim=3,output_dim=5,activation='sigmoid')) 加入带激活函数(sigmoid)的隐含层
Equal to:
model.add(Dense(input_dim=3,output_dim=5))
model.add(Activation('sigmoid'))
5. Objectives
包:keras.objectives
该模块主要负责为神经网络附加损失函数,即目标函数。如mean_squared_error,mean_absolute_error ,squared_hinge,hinge,binary_crossentropy,categorical_crossentropy等,其中binary_crossentropy,categorical_crossentropy是指logloss
注:目标函数的设定是在模型编译阶段
详细说明:http://keras.io/objectives/
eg:
model.compile(loss='binary_crossentropy', optimizer='sgd') #loss是指目标函数
6. Optimizers
包:keras.optimizers
该模块主要负责设定神经网络的优化方法,如sgd。
注:优化函数的设定是在模型编译阶段
详细说明:http://keras.io/optimizers/
eg:
model.compile(loss='binary_crossentropy', optimizer='sgd') #optimizer是指优化方法
7. Preprocessing
包:keras.preprocessing.(image\sequence\text)
数据预处理模块,不过本人目前尚未用过
8. metrics
包:keras.metrics
与sklearn中metrics包基本相同,主要包含一些如binary_accuracy、mae、mse等的评价方法
eg:
predict=model.predict_classes(test_x) #输出预测结果
keras.metrics.binary_accuracy(test_y,predict) #计算预测精度
最新文章
- ADO 读取 ACCESS
- Struts 2.0全面分析
- 深入剖析z-index属性
- Dynamo和Bigtable对比
- [LeetCode]题解(python):064-Minimum Path Sum
- 字符集乱码问题:ISO-8859-1和GBK
- SQL Server 中索引的禁用与删除
- iOS 发布应用时屏蔽NSLog
- ECG信号读出,检测QRS,P,T 波(小波去噪,并根据检测),基于BP辨识的神经网络
- OpenLDAP安装与配置
- 从数据库读取二进制图片,img标签显示图片
- itchat库初探--微信好友全头像的拼接
- jsp进阶
- 蜕变成蝶~Linux设备驱动之中断与定时器
- Oracle为表或字段添加备注
- Codeforces 781C Underground Lab
- centos7防火墙以设置以及关闭selinux
- Flask-socketio聊天室 (附源码)
- 流媒体技术学习笔记之(八)海康、大华IpCamera RTSP地址和格式
- Git 操作指南
热门文章
- 用virtualbox虚拟机无法上网的解决方法
- MyEclipse 10 中安装Android ADT 22插件的方法
- Samsung_tiny4412(驱动笔记07)----spinlock,semaphore,atomic,mutex,completion,interrupt
- LDA模型应用实践-希拉里邮件主题分类
- 2018-2019-2 20165212《网络对抗技术》Exp1 PC平台逆向破解
- [团队项目]SCRUM项目6.0 7.0
- Javascript 的严格模式 use strict
- AQS源码分析
- windows 安装操作系统时切换分区表格式
- Spring MVC 3.0 深入及对注解的详细讲解[转载]