Keras是基于Theano的一个深度学习框架,它的设计参考了Torch,用Python语言编写,是一个高度模块化的神经网络库,支持GPU和CPU。使用文档在这:http://keras.io/,中文文档在这:http://keras-cn.readthedocs.io/en/latest/ ,这个框架是2015年流行起来的,使用中遇到的困惑或者问题可以提交到github:https://github.com/fchollet/keras。

Keras主要包括14个模块包,可参见文档https://keras.io/layers/ ,下面主要对Models、Layers、Initializations、Activations、Objectives、Optimizers、Preprocessing、metrics八个模块包展开介绍。

1. Models包:keras.models

这是Keras中最主要的一个模块,用于对各个组件进行组装。

详细说明:http://keras.io/models/

from keras.models import Sequential

model = Sequential()  # 初始化模型

model.add(...)  # 可使用add方法组装组件

2. Layers包:keras.layers

该模块主要用于生成神经网络层,包含多种类型,如Core layers、Convolutional layers、recurrent layers、advanced_activations layers、normalization layers、embeddings layers等。

其中Core layers里面包含了flatten(CNN的全连接层之前需要把二维特征图flatten成为一维的)、reshape(CNN输入时将一维的向量弄成二维的)、dense(隐藏层)。

Convolutional layers层包含Theano的Convolution2D的封装等。

详细说明:http://keras.io/layers/

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/

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、softmax、relu以及LeakyReLU、PReLU等比较新的激活函数。

详细说明:http://keras.io/activations/

model.add(Dense(input_dim=3, output_dim=5, activation='sigmoid'))  # 加入带激活函数(sigmoid)的隐含层

等价于:

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/

model.compile(loss='binary_crossentropy', optimizer='sgd') #loss是指目标函数

6. Optimizers包:keras.optimizers

该模块主要负责设定神经网络的优化方法,如最基本的随机梯度下降SGD,另外还有Adagrad、Adadelta、RMSprop、Adam,一些新的方法以后也会被不断添加进来。

详细说明:http://keras.io/optimizers/

keras.optimizers.SGD(lr=0.01, momentum=0.9, decay=0.9, nesterov=False)

上面的代码是SGD的使用方法,lr表示学习速率,momentum表示动量项,decay是学习速率的衰减系数(每个epoch衰减一次),Nesterov的值是False或者True,表示使不使用Nesterov momentum。

model = Sequential()

model.add(Dense(64, init='uniform', input_dim=10))

model.add(Activation('tanh'))

model.add(Activation('softmax'))

sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)

model.compile(loss='mean_squared_error', optimizer=sgd)  #指优化方法sgd

model.compile(loss='binary_crossentropy', optimizer='sgd')

7. Preprocessing包:keras.preprocessing

数据预处理模块,包括序列数据的处理、文本数据的处理和图像数据的处理等。对于图像数据的处理,keras提供了ImageDataGenerator函数,实现数据集扩增,对图像做一些弹性变换,比如水平翻转,垂直翻转,旋转等。

8. metrics包:keras.metrics

与sklearn中metrics包基本相同,主要包含一些如binary_accuracy、mae、mse等的评价方法。

predict = model.predict_classes(test_x)       #输出预测结果

keras.metrics.binary_accuracy(test_y, predict)  #计算预测精度

Keras框架简介的更多相关文章

  1. Spring 系列: Spring 框架简介 -7个部分

    Spring 系列: Spring 框架简介 Spring AOP 和 IOC 容器入门 在这由三部分组成的介绍 Spring 框架的系列文章的第一期中,将开始学习如何用 Spring 技术构建轻量级 ...

  2. 《HiWind企业快速开发框架实战》(0)目录及框架简介

    <HiWind企业快速开发框架实战>(0)目录及框架简介 本系列主要介绍一款企业管理系统快速开发框架,该框架旨在快速完成企业管理系统,并实现易维护可移植的目标. 使用逐个系统模块进行编码的 ...

  3. Yaf零基础学习总结1-Yaf框架简介

    从今天开始,给大家讲解下yaf框架,讲解之前肯定要了解下yaf是个什么东西,当然,从标题我们已经知道yaf是个PHP框架了,也许大家对于PHP框架并不陌生,一般PHP程序员用过的框架至少有一两个吧,国 ...

  4. hdwiki 框架简介

    虽然HDwiki是一个开源的wiki系统,并且代码简洁易懂,但如果想在系统上做做进一步开发还需要对框架有一个整体的认识.熟悉了HDwiki的框架以后完全可以独立出来做其他功能的开发,当做一个开源的PH ...

  5. Apache—DBUtils框架简介

    转载自:http://blog.csdn.net/fengdongkun/article/details/8236216 Apache—DBUtils框架简介.DbUtils类.QueryRunner ...

  6. Jersey框架一:Jersey RESTful WebService框架简介

    Jersey系列文章: Jersey框架一:Jersey RESTful WebService框架简介 Jersey框架二:Jersey对JSON的支持 Jersey框架三:Jersey对HTTPS的 ...

  7. Web自动化框架LazyUI使用手册(1)--框架简介

    作者:cryanimal QQ:164166060 web端自动化简介 web端自动化,即通过自动化的方式,对Web页面施行一系列的仿鼠标键盘操作,以达到对Web页面的功能进行自动化测试的目的. 其一 ...

  8. python运维开发(二十二)---JSONP、瀑布流、组合搜索、多级评论、tornado框架简介

    内容目录: JSONP应用 瀑布流布局 组合搜索 多级评论 tornado框架简介 JSONP应用 由于浏览器存在同源策略机制,同源策略阻止从一个源加载的文档或脚本获取或设置另一个源加载的文档的属性. ...

  9. Spring 系列: Spring 框架简介(转载)

    Spring 系列: Spring 框架简介 http://www.ibm.com/developerworks/cn/java/wa-spring1/ Spring AOP 和 IOC 容器入门 在 ...

随机推荐

  1. visio2010去除直线交叉处的歪曲

    Visio画图时,两根直线交叉时,总是默认会出现一个跨线的标志,在2007前的版本,可以通过以下方式解决: 选中线条,然后菜单的格式->行为->连接线->跨线->添加-> ...

  2. hadoop配置文件详解系列(一)-core-site.xml篇

    接上一个属性,这个属性就是设置阈值的. hadoop.security.groups.cache.secs 300 配置用户组映射缓存时间的,当过期时重新获取并缓存. hadoop.security. ...

  3. Ocelot中文文档-中间件注入和重写

    警告!请谨慎使用. 如果您在中间件管道中看到任何异常或奇怪的行为,并且正在使用以下任何一种行为.删除它们,然后重试! 当在Startup.cs中配置Ocelot的时候,可以添加或覆盖中间件.如下所示: ...

  4. Lenghth of Last Word

    description: Given a string s consists of upper/lower-case alphabets and empty space characters ' ', ...

  5. gawk编程语言

    gawk是一门功能丰富的编程语言,你可以通过它所提供的各种特性来编写好几程序处理数据. 22.1 使用变量 gawk编程语言支持两种不同类型的变量: 内建变量和自定义变量 22.1.1 内建变量 ga ...

  6. 创建servlet的三种方式

    第一种方式,实现Servlet接口 package com.example.servlet; import java.io.IOException; import javax.servlet.Serv ...

  7. EF Core Model更新迁移

    EF Core 迁移 感觉就是以前EF Code First的自动同步数据库功能 内容:在你新增.更新TableModel后,如何自动化的更新DB中的真实Table.以及对这些更改进行一个版本控制. ...

  8. 解决jequry使用keydown无法跳转的问题

    问题描述 代码 <script> $("document").ready(function() { $("#button").click(funct ...

  9. hibernate多表查询封装实体

    以前用sql实现联合查询 是非常简单的事,只需要写sql语句就可以,第一次遇到hibernate要实现多表联合查询的时候还楞了一下.最后看了下资料,才恍然大悟,hibernate实现多表联合查询跟SQ ...

  10. oracle数据库-错误编码大全

    ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件   ORA-00018: 超出最大会话数   ORA-00019: 超出最大会话许可数   ORA-000 ...