目前深度学习的研究被炒的不要不要的,作为数据挖掘信息检索方向的学生必须要凑一下热闹。听闻老师推荐了keras大法,必然要见识一下这个python模块的厉害之处。
通过网上资料得知,keras是基于theano的一个模块,能够实现对GPU的无缝结合(看起来很强大的样子),主要是基于深度学习的一些功能进行了封装。神经网络终于有机会能在这个硬件跟得上的时代大放光彩。
前几天easy_install过了一次keras,下载了网上的一个代码demo跑通了,参照csnd博客[1],跑了好几个小时都还在一直运行,只好把它kill掉了,据说要跑很久才有结果。然而今天更新了一下keras到1.0版本,发现之前的demo已经跑不通了,果然如网上资料所说,这个keras是一个还在不断更新的新模块,之前的参数可能进行了调整,导致老程序无法跑通,在这种情况下,有一个最好的方法就是去keras官网查看最新的example进行测试,毕竟对于新手来说,跑不通demo是一件很苦逼的事,然而官网文档应该都是最新的。官网为http://keras.io/,此外还有一个中文版的keras官网,是网友翻译后的网站,域名为
http://keras-cn.readthedocs.io/en/latest/
啰嗦了这么久,终于可以开始学习keras了。对于学习一个新知识,我觉得最好的方法还是先对他的结构有一个大致的了解。于是我就先浏览了一下官网的所有文档,按照顺序一页一页的翻看了一遍。看完之后对keras有了一些大致的理解。
一:
首先,既然keras是一个神经网络的框架,是用的必然是神经网络的一些方法。看一下keras官网的目录
显然,get-start是大致介绍一下keras是干什么吃的,包含什么功能云云。然后是一个小小的example。
二:
然后看到下面的models模块,
大致看了一下这个模块的作用,应该来说,对于神经网络,首先得有一个初始生成序列,也就是上边的sequential功能区,通过以上生成一个初始值。
然后就是下边的layers层
显然,对于神经网络来说,神经网络是有一个或多个输入加上很多层中间层,最后生成一个或多个输出。那么,很容易想到,这里的layers就是神经网络中的中间层。
仔细看一下Layers下方的那些小标签,分别包括Core Layers(核心层),Convolutional Layers(卷积层)、Recurrent Layer(回归层)、Embedding Layers(嵌入层)~~~~,反正这些层都是实现不同的功能,也有通过相互组合来完成中间层的任务。
三:
下面来看Processing层
Processing层从标题就可以看出来这一层是来完成数据预处理的工作,其中包括Sequence序列预处理,Text Preprocessing文本文件预处理,Image Preprocessing图片预处理
按说这一块的功能实现顺序应该在比较前的位置来完成,然后可能是教程为了让用户更快的熟悉keras模块把前两块放在了前面。数据预处理是数据处理过程中必不可少的一部分。
四:
至于剩下的模块就放在一起说了吧
看一下目录就可以知道,这几部分分别包含什么内容,
Objectives模块主要完成最后的compile工作,它的通常形式类似于
Reference:
[1]: http://blog.csdn.net/u012162613/article/details/45397033
[2]: http://www.cnblogs.com/neopenx/p/4453161.html