DeepLearning tutorial 易用的深度学习框架Keras简介
来源:互联网 发布:网络科学导论 课件 编辑:程序博客网 时间:2024/06/16 04:15
DeepLearning tutorial 易用的深度学习框架Keras简介
![](http://static.blog.csdn.net/images/category_icon.jpg)
版权声明:本文为博主原创文章,未经博主允许不得转载。
目录(?)[+]
致读者:本文写于keras开发初期,目前keras已经迭代到1.0版本,很多API都发生了较大的变化,所以本文的粘贴的一些代码可能已经过时,在我的github上有更新后的代码,读者需要的话可以看github上的代码:https://github.com/wepe/MachineLearning
之前我一直在使用Theano,前面五篇Deeplearning相关的文章也是学习Theano的一些笔记,当时已经觉得Theano用起来略显麻烦,有时想实现一个新的结构,就要花很多时间去编程,所以想过将代码模块化,方便重复使用,但因为实在太忙没有时间去做。最近发现了一个叫做Keras的框架,跟我的想法不谋而合,用起来特别简单,适合快速开发。
1. Keras简介
Keras是基于Theano的一个深度学习框架,它的设计参考了Torch,用Python语言编写,是一个高度模块化的神经网络库,支持GPU和CPU。使用文档在这:http://keras.io/,这个框架貌似是刚刚火起来的,使用上的问题可以到github提issue:https://github.com/fchollet/keras
下面简单介绍一下怎么使用Keras,以Mnist数据库为例,编写一个CNN网络结构,你将会发现特别简单。
2. Keras里的模块介绍
Optimizers
顾名思义,Optimizers包含了一些优化的方法,比如最基本的随机梯度下降SGD,另外还有Adagrad、Adadelta、RMSprop、Adam,一些新的方法以后也会被不断添加进来。
- 1
上面的代码是SGD的使用方法,lr表示学习速率,momentum表示动量项,decay是学习速率的衰减系数(每个epoch衰减一次),Nesterov的值是False或者True,表示使不使用Nesterov momentum。其他的请参考文档。
Objectives
这是目标函数模块,keras提供了mean_squared_error,mean_absolute_error
,squared_hinge,hinge,binary_crossentropy,categorical_crossentropy这几种目标函数。这里binary_crossentropy 和 categorical_crossentropy也就是常说的logloss.
Activations
这是激活函数模块,keras提供了linear、sigmoid、hard_sigmoid、tanh、softplus、relu、softplus,另外softmax也放在Activations模块里(我觉得放在layers模块里更合理些)。此外,像LeakyReLU和PReLU这种比较新的激活函数,keras在keras.layers.advanced_activations模块里提供。
Initializations
这是参数初始化模块,在添加layer的时候调用init进行初始化。keras提供了uniform、lecun_uniform、normal、orthogonal、zero、glorot_normal、he_normal这几种。
layers
layers模块包含了core、convolutional、recurrent、advanced_activations、normalization、embeddings这几种layer。
其中core里面包含了flatten(CNN的全连接层之前需要把二维特征图flatten成为一维的)、reshape(CNN输入时将一维的向量弄成二维的)、dense(就是隐藏层,dense是稠密的意思),还有其他的就不介绍了。convolutional层基本就是Theano的Convolution2D的封装。
Preprocessing
这是预处理模块,包括序列数据的处理,文本数据的处理,图像数据的处理。重点看一下图像数据的处理,keras提供了ImageDataGenerator函数,实现data augmentation,数据集扩增,对图像做一些弹性变换,比如水平翻转,垂直翻转,旋转等。
Models
这是最主要的模块,模型。上面定义了各种基本组件,model是将它们组合起来,下面通过一个实例来说明。
3.一个实例:用CNN分类Mnist
数据下载
Mnist数据在其官网上有提供,但是不是图像格式的,因为我们通常都是直接处理图像,为了以后程序能复用,我把它弄成图像格式的,这里可以下载:http://pan.baidu.com/s/1qCdS6,共有42000张图片。
读取图片数据
keras要求输入的数据格式是numpy.array类型(numpy是一个python的数值计算的库),所以需要写一个脚本来读入mnist图像,保存为一个四维的data,还有一个一维的label,代码:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
构建CNN,训练
短短二十多行代码,构建一个三个卷积层的CNN,直接读下面的代码吧,有注释,很容易读懂:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 代码使用与结果
代码放在我github的机器学习仓库里:https://github.com/wepe/MachineLearning,非github用户直接点右下的DownloadZip。
在/DeepLearning Tutorials/keras_usage目录下包括data.py
,cnn.py
两份代码,下载Mnist数据后解压到该目录下,运行cnn.py
这份文件即可。
结果如下所示,在Epoch 9达到了0.98的训练集识别率和0.97的验证集识别率:
转载请注明出处:http://blog.csdn.net/u012162613/article/details/45397033
- DeepLearning tutorial 易用的深度学习框架Keras简介
- DeepLearning tutorial(6)易用的深度学习框架Keras简介
- DeepLearning tutorial(6)易用的深度学习框架Keras简介
- DeepLearning tutorial(6)易用的深度学习框架Keras简介
- DeepLearning tutorial(6)易用的深度学习框架Keras简介
- DeepLearning tutorial(6)易用的深度学习框架Keras简介
- DeepLearning tutorial(6)易用的深度学习框架Keras简介
- DeepLearning tutorial(6)易用的深度学习框架Keras简介
- DeepLearning tutorial(7)深度学习框架Keras的使用-进阶
- DeepLearning tutorial(7)深度学习框架Keras的使用-进阶
- DeepLearning tutorial(7)深度学习框架Keras的使用-进阶
- DeepLearning tutorial(7)深度学习框架Keras的使用-进阶
- DeepLearning tutorial(7)深度学习框架Keras的使用-进阶
- DeepLearning tutorial(7)深度学习框架Keras的使用-进阶
- DeepLearning tutorial(7)深度学习框架Keras的使用-进阶
- 易用的深度学习框架Keras简介及使用
- 易用的深度学习框架Keras简介及使用
- 易用的深度学习框架Keras简介
- $(window).width()与window.innerWidth的区别
- Centos里的tomcat开启https接口
- asp.net mvc下使用FluentScheduler 后台任务定时器
- 搭建自己的ES6转ES5环境
- OkHttpGET+Post+异步GET+异步POST请求数据
- DeepLearning tutorial 易用的深度学习框架Keras简介
- 两个程序模拟交互,出现No route to host异常
- Android AIDL使用详解
- 备战秋招复习之HashMap
- eclipse配置虚拟tomcat运行环境,不同项目配置不同tomcat端口号
- PowerDesigner 正向工程 和 逆向工程 说明
- 工作感言:任务分配及管理
- Spring各个jar包作用
- ARP攻击原理简析及防御措施