Keras是目前相对比较好的基于Python的深度学习库。Keras特别友好,可以让人快速实现自己的模型,是机器学习入门的不二人选。
Keras的设计原则是:
- 用户友好:Keras是为人类而不是天顶星人设计的API。用户的使用体验始终是我们考虑的首要和中心内容。Keras遵循减少认知困难的最佳实践:Keras提供一致而简洁的API, 能够极大减少一般应用下用户的工作量,同时,Keras提供清晰和具有实践意义的bug反馈。
- 模块性:模型可理解为一个层的序列或数据的运算图,完全可配置的模块可以用最少的代价自由组合在一起。具体而言,网络层、损失函数、优化器、初始化策略、激活函数、正则化方法都是独立的模块,你可以使用它们来构建自己的模型。
- 易扩展性:添加新模块超级容易,只需要仿照现有的模块编写新的类或函数即可。创建新模块的便利性使得Keras更适合于先进的研究工作。
与Python协作:Keras没有单独的模型配置文件类型(作为对比,caffe有),模型由python代码描述,使其更紧凑和更易debug,并提供了扩展的便利性。
当然有利也有弊,通常方便的同时意味着就是扩展性差。对于绝大多数人来说,创建自己的模型难度还是比较大的。因此这并不算是缺点。
Keras拥有官方中文文档,对于读洋文很费劲的我们也是相当友好的。
我用的是Windows配置Keras。因为Keras需要Tensorflow或者Theano作为后端,并且默认Tensorflow。所以我在配置好Keras的时候,已经顺便把Tensorflow配置好了。
需要注意的是,这里有一个神坑,我就被坑了一个星期。
这是一个无可奈何的问题,在如何表示一组彩色图片的问题上,Theano和TensorFlow发生了分歧,'th'模式,也即Theano模式会把100张RGB三通道的16×32(高为16宽为32)彩色图表示为下面这种形式(100,3,16,32),Caffe采取的也是这种方式。第0个维度是样本维,代表样本的数目,第1个维度是通道维,代表颜色通道数。后面两个就是高和宽了。这种theano风格的数据组织方法,称为“channels_first”,即通道维靠前。而TensorFlow,的表达形式是(100,16,32,3),即把通道维放在了最后,这种数据组织方式称为“channels_last”。
因为网上绝大多数代码都是以Theano作为后端的,因此也是采用的前者的方式。而如果我在卷积层设置padding='same‘,那么即使shape不符合,层也能把数据自动填充,也能训练出结果。因此,我才被忽悠了一个星期。直到后来发现了这个问题。
Keras的配置,我们可以直接在官网的Keras安装和配置指南(Windows)看到。
在配置Keras之前,我们需要一台Windows7以上,最好是Windows10的电脑。如果需要显卡编程,我们需要安装Microsoft Visual Studio2015。(当然我的电脑估计是不需要了)。在这个基础上,配置越强越好。
我们还需要Python。需要注意的是,Python版本不是越高越好,我的电脑里面一开始是Python3.7,后来安装Keras的时候就崩了。建议按照教程,安装Anconda3 4.3.0。这是一个科学计算集成Python发行版。安装了它,等于很多和科学计算有关的库都被安装了,避免了后面的麻烦。(曾经我做数据挖掘的作业的时候,要是知道有这个东西,也不用崩溃到上Linux做了。)
如果只安装CPU版本,只需要再输入命令:
# CPU 版本
>>> pip install --upgrade tensorflow
# Keras 安装
>>> pip install keras -U --pre
然后进入Python命令行:
>>> import keras
Using Tensorflow backend.
如果没有报错,那么就是成功了。
如果安装GPU版本,则需要先安装CUDA和加速库CuDNN。这个过程比较复杂。看Keras官网的教程就行了。我是直接拷贝了朋友的安装包。
最后安装好了之后:
# GPU 版本
>>> pip install --upgrade tensorflow-gpu
# Keras 安装
>>> pip install keras -U --pre
这样Keras就安装好了。