首页 >后端开发 >Python教程 >Python深度学习指南

Python深度学习指南

伊谢尔伦
伊谢尔伦原创
2017-01-23 13:29:243681浏览

深度学习,是人工智能领域的一个突出的话题,被众人关注已经有相当长的一段时间了。它备受关注是因为在计算机视觉( Computer  Vision )和游戏( Alpha GO )等领域有超越人类能力的突破 。自上一次调查以来,对于深度学习的关注又出现了大幅增加的趋势。

下图是谷歌趋势向我们所展示的:

170122094724382.jpg

如果你对这个话题感兴趣的话,本文是一个很好的非技术性的介绍。如果你有兴趣了解关于深度学习的最新趋势,本文是一个很全面的汇总。

在这里,我们的目标是为新手和想进一步探索深度学习的人们提供一个学习路径。那么,你准备好踏上征服深度学习的征程了吗?我们上路吧。

步骤 0 :出征准备

建议在进入深入学习领域之前,应该了解机器学习的基本知识。“机器学习的学习路径”是一个完整的资源,让你开始了解该领域。

如果你想要一个较短的版本,请看下面:

基础数学,资源 1 :“数学 | 可汗学院”(尤其是微积分、概率论和线性代数)

Python 基础,资源:“计算机科学入门”, EDX课程

统计学基础,资源:“统计入门”,Udacity 的课程

机器学习基础,资源:“机器学习入门”, Udacity 的课程

时间:建议 2-6 个月

步骤 1 :设置好你的机器

在继续下一步之前,请确保有支撑硬件。一般建议应该至少有:

一个足够好的 GPU ( 4+ GB ),最好是 Nvidia 的

一个够用的 CPU (如英特尔酷睿 i3 可以,而英特尔 Pentium  不行)

4GB  内存或取决于数据集。

如果仍然不确定,可以看一下这个硬件指南 

PS :如果你是一个铁杆游戏玩家(当然不只是糖果粉碎机玩家!),你可能已经有了所需 硬件。

如果没有所需硬件,可以购买或租用一个亚马逊网页服务( AWS )。这里有个利用 AWS 进行深度学习的好指南。

注意:在这个阶段不用安装任何深度学习的学习库,这些在步骤 3 中做。

步骤 2 :尝试一下

现在有了足够的预备知识,可以进一步了解深度学习了。

按照个人喜好,可以关注:

博客: (资源 1 :“深度学习的基础” 资源 2 :“黑客的神经网络指南” )

视频:“简化的深度学习”

教科书:《神经网络和深度学习》

除了这些先决条件,还应该知道流行的深度学习程序库和运行它们的语言。这是一个(非全面)列表(更全面的列表请查看维基页面):

Caffe  

DeepLearning4j 

Tensorflow 

Theano 

Torch 

其他一些著名的库包括:

Mocha 

neon 

H2O 

MXNet 

Keras

Lasagne

Nolearn 

这里有一个根据语言分类的深度学习库列表

建议看斯坦福的 cs231n 课程第 12 讲:流行的深度学习库概述

时间:建议 1-3 周

步骤 3 :选择你自己的探险之路

现在有趣的部分来了!深度学习已被应用在各个领域并带来了最先进成果。为了进入到这个领域,你,读者,需要选择一条合适自己的路走。这应该是个实践经验,那样你就可以在目前所理解的之上获得一个合适的基础。

注意:每条路径包含一个入门简介的博客,一个实践项目,项目所需的深度学习的程序库和辅助课程。首先理解简介,然后安装所需的程序库,开始项目工作。如果你在这其中遇到任何困难,利用相关的课程以获得支持。

深度学习之计算机视觉

入门简介:“ DL forComputer Vision ”电脑视觉博客

项目:“ FacialKeypoint Detection ”人脸关键点检测教程 

所需程序库: Nolearn 

相关课程:“ cs231n :   卷积神经网络视觉识别” 

深度学习之自然语言处理

入门简介:“ DeepLearning, NLP, and Representations ”(“深度学习,自然语言处理与呈现”博客)

项目:“深度学习聊天机器人”:

“第一部分”

“第二部分”

所需程序库: tensorflow

相关课程:“ cs224d :深度学习在自然语言处理方面的应用”

深度学习之语音 / 音频识别

入门简介:“深度演讲:深度学习的经验教训”新闻和相应的视频。

项目:“用 Magenta 生成音乐( tensorflow )” 

所需程序库: Magenta , 

相关课程:“深度学习( 2016 春季), cilvr 实验室 @ 纽约 

深度学习之强化学习

入门介绍与项目:“深度强化学习:来自 Pixels 的乒乓球游戏”  

所需程序库:没有要求。但是需要 openAI gym  来测试你的模型。

相关课程:“ cs294 :深度强化学习”

时间:建议 1-2 个月

步骤 4 :深入深度学习

现在(几乎)能够在深度学习名人堂上占一个坑!前面的道路是漫长的和深刻的(双关语),其实主要是还未探索过的。现在是靠你自己熟悉和使用这个新技能的时候。这里有一些技巧,可以提升你的技能。

选择一个不同的路径重复上述步骤。

深度学习之以上没提到的!(例如:交易的深度学习,为优化能源效率的深度学习)

使用你新学到的技能来创建一个东西(请记得,力量越大,责任越大, )

测试你的深度学习技能(如 Kaggle  )

参与深度学习社区(如谷歌群)

关注最新的研究成果及研究人员。(如“ RE.WORK DL Summit  ”)

时间:建议——无上限!

具体来说说用python开发或学习机器学习,深度学习的重要模块!应该说是必不可少的模块!
1. 前期准备, 你多多少少需要懂python科学运算,数据整理还有出图像结果的模块,这三个必不可少:numpy, pandas, matplotlib.
2. 进阶准备,在机器学习方面,scikit learn 是汇集了众多机器学习方法的模块,它支持各种各样的机器学习方法。你总能找到适合你项目的。
3. 同样是进阶的,在神经网络方面有着巨大贡献的tensorflow,这个是Google开发,而且挖了挺多theano的开发人员。我觉得神经网络的开发没有比tensorflow更牛的了。而且你想Google这大公司,更新推进的速度肯定也不会慢。看好它。
4. 如果想方便快捷地搭建神经网络, Keras 这个模块很不错, 他的底层是 Tensorflow 和 Theano, 所以在 Windows, MacOS, Linux上都能用得到.
5. 的确是还有很多其他的模块可以运用,不过在我个人的机器学习生涯中,主要就是运用这些了。
为了方便大家的学习,推广华人在机器学习领域的力量,我有自己做一套的scikit learn,Theano,  Keras, 还有tensorflow的中文教学视频, 机器学习的简介系列。国内的反响还不怎么样,不过在YouTube上已经很多人观看了。希望大家支持华人的力量。

Python机器学习库和深度学习库总结


1. Scikit-learn(重点推荐)

Scikit-learn 是基于Scipy为机器学习建造的的一个Python模块,他的特色就是多样化的分类,回归和聚类的算法包括支持向量机,逻辑回归,朴素贝叶斯分类器,随机森林,Gradient Boosting,聚类算法和DBSCAN。而且也设计出了Python numerical和scientific libraries Numpy and Scipy 

2、Keras(深度学习)

Keras是基于Theano的一个深度学习框架,它的设计参考了Torch,用Python语言编写,是一个高度模块化的神经网络库,支持GPU和CPU。 

3、Lasagne(深度学习)

不只是一个美味的意大利菜,也是一个和Keras有着相似功能的深度学习库,但其在设计上与它们有些不同。

4.Pylearn2

Pylearn是一个让机器学习研究简单化的基于Theano的库程序。它把深度学习和人工智能研究许多常用的模型以及训练算法封装成一个单一的实验包,如随机梯度下降。 

5.NuPIC

NuPIC是一个以HTM学习算法为工具的机器智能平台。HTM是皮层的精确计算方法。HTM的核心是基于时间的持续学习算法和储存和撤销的时空模式。NuPIC适合于各种各样的问题,尤其是检测异常和预测的流数据来源。

6. Nilearn

Nilearn 是一个能够快速统计学习神经影像数据的Python模块。它利用Python语言中的scikit-learn 工具箱和一些进行预测建模,分类,解码,连通性分析的应用程序来进行多元的统计。 

7.PyBrain

Pybrain是基于Python语言强化学习,人工智能,神经网络库的简称。 它的目标是提供灵活、容易使用并且强大的机器学习算法和进行各种各样的预定义的环境中测试来比较你的算法。 

8.Pattern

Pattern 是Python语言下的一个网络挖掘模块。它为数据挖掘,自然语言处理,网络分析和机器学习提供工具。它支持向量空间模型、聚类、支持向量机和感知机并且用KNN分类法进行分类。 

9.Fuel

Fuel为你的机器学习模型提供数据。他有一个共享如MNIST, CIFAR-10 (图片数据集), Google's One Billion Words (文字)这类数据集的接口。你使用他来通过很多种的方式来替代自己的数据。 

10.Bob

Bob是一个免费的信号处理和机器学习的工具。它的工具箱是用Python和C++语言共同编写的,它的设计目的是变得更加高效并且减少开发时间,它是由处理图像工具,音频和视频处理、机器学习和模式识别的大量软件包构成的。 

11.Skdata

Skdata是机器学习和统计的数据集的库程序。这个模块对于玩具问题,流行的计算机视觉和自然语言的数据集提供标准的Python语言的使用。 

12.MILK

MILK是Python语言下的机器学习工具包。它主要是在很多可得到的分类比如SVMS,K-NN,随机森林,决策树中使用监督分类法。 它还执行特征选择。 这些分类器在许多方面相结合,可以形成不同的例如无监督学习、密切关系金传播和由MILK支持的K-means聚类等分类系统。 

13.IEPY

IEPY是一个专注于关系抽取的开源性信息抽取工具。它主要针对的是需要对大型数据集进行信息提取的用户和想要尝试新的算法的科学家。 

14.Quepy

Quepy是通过改变自然语言问题从而在数据库查询语言中进行查询的一个Python框架。他可以简单的被定义为在自然语言和数据库查询中不同类型的问题。所以,你不用编码就可以建立你自己的一个用自然语言进入你的数据库的系统。

现在Quepy提供对于Sparql和MQL查询语言的支持。并且计划将它延伸到其他的数据库查询语言。 

15.Hebel

Hebel是在Python语言中对于神经网络的深度学习的一个库程序,它使用的是通过PyCUDA来进行GPU和CUDA的加速。它是最重要的神经网络模型的类型的工具而且能提供一些不同的活动函数的激活功能,例如动力,涅斯捷罗夫动力,信号丢失和停止法。 

16.mlxtend

它是一个由有用的工具和日常数据科学任务的扩展组成的一个库程序。 

17.nolearn

这个程序包容纳了大量能对你完成机器学习任务有帮助的实用程序模块。其中大量的模块和scikit-learn一起工作,其它的通常更有用。

18.Ramp

Ramp是一个在Python语言下制定机器学习中加快原型设计的解决方案的库程序。他是一个轻型的pandas-based机器学习中可插入的框架,它现存的Python语言下的机器学习和统计工具(比如scikit-learn,rpy2等)Ramp提供了一个简单的声明性语法探索功能从而能够快速有效地实施算法和转换。 

19.Feature Forge

这一系列工具通过与scikit-learn兼容的API,来创建和测试机器学习功能。

这个库程序提供了一组工具,它会让你在许多机器学习程序使用中很受用。当你使用scikit-learn这个工具时,你会感觉到受到了很大的帮助。(虽然这只能在你有不同的算法时起作用。) 

20.REP

REP是以一种和谐、可再生的方式为指挥数据移动驱动所提供的一种环境。

它有一个统一的分类器包装来提供各种各样的操作,例如TMVA, Sklearn, XGBoost, uBoost等等。并且它可以在一个群体以平行的方式训练分类器。同时它也提供了一个交互式的情节。 

21.Python 学习机器样品

用亚马逊的机器学习建造的简单软件收集。

22.Python-ELM

这是一个在Python语言下基于scikit-learn的极端学习机器的实现。

23.gensim

主题模型python实现

Scalable statistical semantics

Analyze plain-text documents for semantic structure

Retrieve semantically similar documents


声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn