DeepLearning常用库简要介绍与对比

网上近日流传一张DL相关库在Github上的受关注度对比(数据应该是2016/03/15左右统计的): 其中tensorflow,caffe,keras和Theano排名比较靠前。 今日组会报告上tj师弟从个人使用经验上做了简单介绍与对比,分享给大家。 ===================华丽的分隔线==================== 师弟的原文出处:http://tianjun.me/essays/102/ 本文将从deep learning 相关工具库的使用者角度来介绍下github上stars数排在前面的几个库(tensorflow, keras, torch, theano, skflow, lasagne, blocks)。由于我的主要研究内容为文本相关的工作,所以各个库的分析带有一定主观因素,以RNN模型为主,CNN相关的内容了解得不是特别深入(本文没有比较caffe和mxnet,其实主要原因还是自己C++太久没用了……)。 阅读本文你会了解: 1. 各个库是如何对神经网络中的结构和计算单元进行抽象的; 2. 如何用每个库跑RNN相关的模型; 3. 各个库学习和使用的难以程度对比; 4. 在各个库基础之上进一步改进和开发的难易程度. 本文不会涉及: 1. 各个库运行时间效率的对比(我没有自己做过相关的对比实验,但是网上有很多数据可以查); 2. CNN相关模型的构建(前面提到了自己最近对这块了解得不多); 3. RNN相关模型的原理和解释(网上很多资料,可以先学习后再进一步阅读). 先说说这几个库之间的大致关系 对于一个优秀的深度学习系统,或者更广来说优秀的科学计算系统,最重要的是编程接口的设计。他们都采用将一个领域特定语言(domain specific language)嵌入到一个主语言中。例如numpy将矩阵运算嵌入到python中。这类嵌入一般分为两种,其中一种嵌入的较浅,其中每个语句都按原来的意思执行,且通常采用命令式编程(imperative programming),其中numpy和Torch就是属于这种。而另一种则用一种深的嵌入方式,提供一整套针对具体应用的迷你语言。这一种通常使用声明式语言(declarative programing),既用户只需要声明要做什么,而具体执行则由系统完成。这类系统包括Caffe,theano和刚公布的TensorFlow。 以上是摘自MXNet设计和实现中的一段话。理解了这段话后,对后面各个库的进一步理解很有帮助。MXNet的设计者表示融合了这两种编程模式,我们先抛开mxnet,如上所述torch是采用命令式编程,然后theano和tensorflow是采用声明式编程,skflow对常用的tensorflow的封装,lasagne是对theano的封装,blocks除了对theano进行封装之外还提供了额外的处理机制,keras则是用一套接口同时封装了theano和tensorflow,如下图所示。 从theano说起 前面说theano是声明式语言,其基本过程可以描述为以下几步: 1. … 继续阅读

基于Theano的DNN框架Blocks使用简要总结

Blocks官方代码地址:https://github.com/mila-udem/blocks Blocks是加拿大Montreal大学Bengio实验室牵头开发的基于Python的神经网络模型框架,可方便地在大规模数据上进行复杂神经网络模型的训练。它包含有很多外置工具包如,logging, monitoring, visualization, and serialization,而Fuel则提供了数据格式的标准化。 Fuel官方代码地址:https://github.com/mila-udem/fuel 由于Blocks仍在进一步开发中,以下说明中遇到的错误可能已被修复,因而只可作为参考[注:当前时间2016/03/01]。 1. 安装Blocks和Fuel: 安装git,git的安装和使用可参考[Bitbucket-团队开发私有库使用指南, http://jacoxu.com/?p=1611] 接下来安装blocks,由于需要通过github下载,进入git bash,输入: pip install git+git://github.com/mila-udem/blocks.git \ -r https://raw.githubusercontent.com/mila-udem/blocks/master/requirements.txt 注:a). 实际运行中,可修改一下requirements.txt文件中所定义的库,如numpy等在安装ANACOND的时候都已经安装,那么可以删除掉requirements.txt文件中对应依赖行。 b). 若执行过程中有错误可能会导致blocks没有正常安装,则需要重新执行一下 pip install git+git://github.com/mila-udem/blocks.git 若安装成功则在c:\anaconda2\lib\site-packages 目录下可以看到和blocks及fuel相关的4个文件夹,并且在在python模式下执行如下两行命令,不报错即可: from blocks.bricks import Tanh from fuel.datasets import MNIST 说明Blocks和Fuel已经可以正常调用。 2. 利用Fuel下载数据集 … 继续阅读

Win7配置Theano环境,附Ubuntu+TensorFlow安装

可参考Windows安装Theano官方教程: http://deeplearning.net/software/theano/install_windows.html#install-windows 但是内容太多,不看也罢,很多软件已经不需要配置,或者是冗余的。如果你恰好和我一样都是Windows系统,Nvidia带GPU显卡,且你安装的时间离现在2016/02/03的日子还比较近,那么按照下面的顺序装机吧: 1. 安装Nvidia显卡驱动,官网: http://www.nvidia.cn/Download/index.aspx?lang=cn 2. 安装Visual_Studio: https://www.visualstudio.com/ 3. 安装JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html 4. 安装CUDA 使用GPU加速(选择自己的配置,如Windows – x86_64-7-local) https://developer.nvidia.com/cuda-downloads 5. 安装ANACOND可以免去安装很多Python库的麻烦: https://www.continuum.io/downloads#_windows 6. Python IDE: PyCharm: http://www.jetbrains.com/pycharm/download/#section=windows 7. 配置G++ 官网给的建议是安装TDM-GCC(http://tdm-gcc.tdragon.net/),但是我安装之后出现g++加载错误,不确定是不是版本不匹配的问题。在参考博文(http://blog.sina.com.cn/s/blog_96b836170102vq22.html)中提到可以安装MinGW解决g++问题,解决方案为:在cmd输入:conda install mingw libpython,MinGW等文件夹会自动装到anaconda下面。 8. 安装Theano https://github.com/Theano/Theano/archive/master.zip 解压,进入目录在命令行中执行“python setup.py develop” 9. 配置GPU和G++编译环境:创建文件C:\Users\jacoxu\.theanorc,内容如下: … 继续阅读

Theano教程

感谢TJ同学讲解Theano. – 20141210 上次使用Pycharm的时候我们已经安装了Pycharm 和 Anaconda,这里我们在安装一下Theano,安装Theano有两种方式: 1. 在anaconda下pip install theano; 2. 下载Theano的安装包进行安装。 Theano是什么? Python是解释性语言,Theano是Python的一个库,提供了很多接口,可以隐形的和GPU打交道,不需要GPU编程,免去了学CUDA的麻烦。 GPU 默认是32位的,如果写64位会报错的。 安装 需要安装的东西: 1. Pycharm, Anaconda,Theano,iPython(可选) 所有的Theano接口都是以 T.* 命名。 参数共享,borrow参数: Theano 和Python 的内存空间相互独立。 先在内存中用numpy初始化一个数据,然后要搬到GPU上。如果数据量不是太大,而且我们非常希望使用GPU的话,默认的就是Deep Copy, 而有时数据会非常庞大,copy过程更浪费时间,那么我们使用shallow copy。额。。。这部分待理解,因如果分区当前配置了使用GPU,则Borrow参数无效。 迭代,用Theano 求梯度非常方便。 如果学习源码的话,可以查看pylenra. 教程的话,过一遍 http://www.deeplearning.net/tutorial/ 即可。