版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Gavin__Zhou/article/details/49948141
最近在学习deep learning,准备搭建Keras环境,但是keras依赖Theano,安装虽然不是特别复杂但是也是走了一些弯路,在此写出记录一下
Theano简介
主页:http://deeplearning.net/software/theano/
Github网址:https://github.com/Theano/Theano
Theano不仅是这篇文章中将要讨论的其他框架的核心库,于其自身而言,它也是一个强大的库,几乎能在任何情况下使用,从简单的logistic回归到建模并生成音乐和弦序列或是使用长短期记忆人工神经网络对电影收视率进行分类。 Theano大部分代码是使用Cython编写,Cython是一个可编译为本地可执行代码的Python方言,与仅仅使用解释性Python语言相比,它能够使运行速度快速提升。最重要的是,很多优化程序已经集成到Theano库中,它能够优化你的计算量并让你的运行时间保持最低。 如果速度的提升还不能满足你,它还内置支持使用CUDA在GPU上执行那些所有耗时的计算。所有的这一切仅仅只需要修改配置文件中的标志位即可。在CPU上运行一个脚本,然后切换到GPU,而对于你的代码,则不需要做任何变化。 尽管Theano使用Cython和CUDA对其性能大大提升,但你仍然可以仅仅使用Python语言来创建几乎任何类型的神经网络结构。
keras简介
主页:http://keras.io/ Github网址:https://github.com/fchollet/keras Keras是一个简约的、高度模块化的神经网络库,设计参考了Torch,基于Theano和Python语言编写,支持GPU和CPU。它的开发侧重于实现快速试验和创造新的深度学习模型。 如果你需要具有以下功能的深度学习库,采用Keras就恰到好处: 可以很容易地、快速地建立原型(通过总体模块化,极简化并且可扩展化)。 支持卷积网络和递归网络,以及两者的组合。 支持任意连接方式(包括多输入多输出训练)。 Keras库与其他采用Theano库的区别是Keras的编码风格非常简约、清晰。它把所有的要点使用小类封装起来,能够很容易地组合在一起并创造出一种全新的模型。
安装Theano
这个过程我走了两次,第一次安装成功但是对keras的代码运行有错,之后找到原因重装一切正常;
我先说我安装错误的那次: 按照官方文档的介绍: 我的系统是ubuntu14.04,所以直接上:
代码语言:javascript复制sudo apt-get install python-numpy python-scipy python-dev python-pip python-nose g libopenblas-dev git
sudo pip install Theano
OK,一切正常!貌似是对了,下面我们验证一下
看似正常,我们来个toy display玩玩mnist,大家看这篇博客深度学习框架Keras简介,我们就用他的代码玩玩。 这时出现了错误,说“卷积的时候没有定义input_shape“,原始的错误我没截图大概就是这个意思,google了一下原因是keras版本更新API也更新了,一通查documents改错,最后终于全部改好。我的Theano版本是0.7.0,我的这份代码也会上传CSDN,有兴趣的可以下载看看。 一切正常运行之后,结果貌似还不错,10次epoch之后,成功率大概97%左右,上个截图:
貌似都对了对吧,可是我们修改下代码八激活函数换成relu看看:
又出错,错误是”AttributeError: ‘module’ object has no attribute ‘relu’” 只好google了一把,别人是这么说的:
原来是安装的Theano不对,不可以用pip的形式安装,直接git克隆安装就可以了。
正确的安装方法是
代码语言:javascript复制git clone git://github.com/Theano/Theano.git
cd Theano
python setup.py develop --user
cd ..
执行之后,将Theano目录下的theano目录拷贝到python安装目录下的dist-package下就可以了,我的机器是/usr/lib/python2.7/dist-packages 到此,咱们改下代码运行下,没问题只是成功率低了很多,至少没报错对吧
安装keras
这就没什么好说的了,自己下载下来就行了,keras Github地址
Ref: [1] Keras API 文档 [2] relu错误解决参考网址 [3] keras下识别mnist [4] 我的修改代码