2017-04-21 12:18:35 WZZ18191171661 阅读数 1609
  • 深度学习框架Tensorflow案例实战视频课程

    深度学习框架Tensorflow案例实战视频培训课程概况: Tensorflow是谷歌开源的深度学习(包括机器学习)框架,伴随着人工智能业的兴盛其大名早已响彻云霄。本课程从Tensorflow安装开始讲起,从基本计算结构到深度学习各大神经网络,全程案例代码实战,一步步带大家入门如何使用深度学习框架Tensorflow,玩转Tensorflow模型训练、等所有知识点。

    30888 人正在学习 去看看 唐宇迪

随着“大数据时代”的到来和计算能力的提升,深度学习成为了一种很火的新科技。已经成功的应用到了很多个领域中。包括“计算机视觉”“语音识别”“自然语言处理”等。为了进行高效的开发一个深度学习系统,许多大型科技公司都推出了自己的深度学习框架。而且,最近这段时间接二连三的有新的“深度学习”框架推出。自己感觉有必要做一个总结,来收集一下这些深度学习框架。

但是,在此同时,我有一个问题,真的需要这么多的深度学习框架吗?在科技领域为什么看不到合作呢?众多的深度学习框架,企业和个人如何选择一个适合自己的框架呢?

以下,我将围绕着几个问题展开整篇博客的内容。

1、前言

首先,让我们看一下,当前都有哪些深度学习框架?我会列出相应的链接,方便大家的访问。(我会不断地更新这个列表)

1.Tensorflow – https://www.tensorflow.org/
github – https://github.com/tensorflow/tensorflow

2.Caffe – http://caffe.berkeleyvision.org/
github – https://github.com/BVLC/caffe

3.Theano – http://deeplearning.net/software/theano/install.html
github – https://github.com/Theano/Theano

4.keras – https://keras.io/
github – https://github.com/fchollet/keras

5.Torch – http://torch.ch/
github – https://github.com/torch/torch7

6.Lasagne – http://lasagne.readthedocs.io/en/latest/
github – https://github.com/Lasagne/Lasagne

7.MXNet – http://mxnet.io/
github – https://github.com/dmlc/mxnet

8.DIGITS – https://developer.nvidia.com/digits
github – https://github.com/NVIDIA/DIGITS

9.CNTK – https://cntk.codeplex.com/
github – https://github.com/Microsoft/CNTK

10.PaddlePaddle – http://www.paddlepaddle.org/
github – https://github.com/PaddlePaddle/Paddle

11.Deeplearning4j – https://github.com/deeplearning4j/
deeplearning4j

12.tensorlayer – http://tensorlayer.readthedocs.io/en/latest/
github – https://github.com/zsdonghao/tensorlayer

13.TFLearn – http://tflearn.org/tutorials/
githu – https://github.com/tflearn/tflearn

14.caffe2 – https://caffe2.ai/
github – https://github.com/caffe2/caffe2

15.pytorch – http://pytorch.org/
github – https://github.com/pytorch/pytorch

16.Leaf – http://autumnai.com/leaf/book/
github – https://github.com/autumnai/leaf

17.Chainer – http://chainer.org/
github – https://github.com/pfnet/chainer

18.DSSTNE
github – https://github.com/amznlabs/amazon-dsstne

19.Neon
github – https://github.com/NervanaSystems/neon

2、性能分析

接下来,让我们简单的比较一下它们的性能,能存在总会有理由的,它们都有自己的特点。
以下的表格是一个有关于各个深度学习框架的一个对比:

这里写图片描述

注:
1.从这个表格我们可以看出,当前比较受欢迎的深度学习框架包括:tensorflow、caffe、keras、CNTK、MXNet、Torch、Theano。工业界中常用的包括:tensorflow、caffe、CNTK、MXNet、Torch。学术界常用的包括:keras、theano。

2.这个表格中的部分数据来自于互联网,可能存在着一定的误差吗,但是总的来说具有一定的参考价值。

3、问题探讨

通过上面的表格,我们会发现有很多的深度学习框架。那么,我们该如何选择一个适合自己的深度学习框架呢?你需要根据你自己的实际需要选择合适的框架。需要考虑的主要因素包括:开发语言、硬件平台、操作系统等

> a. 开发语言
> 通过上面的表格我们可以总结出深度学习支持的开发语言包括:
>Python/C++/R/Julia/Scala/Go/Javascript/Perl/Matlab
>/Lua/Cuda/JAVA/Rust等。但是最常用的两种开发语言是:Python和C++。主要的原因如下所示:
> 
> 1) python非常简单,很容易上手,但是运行的效率比较低,因此常用来快速的搭建深度学习中的网络模型。
> 2)C++的语法众多,需要自己分配并处理内容,开发代码冗长,但是运行效率很高,因此常用来作为深度学习中的终端引擎来使用。
> 如果你自己不熟悉Python或者C++,你可以使用的框架就非常的有限;
> 如果你熟悉Python或者C++,你几乎可以使用任何一种深度学习框架;
> 如果你是一名JAVA爱好者,你更可能会选择利用Deeplearning来进行开发。
> 
> 因此,开发语言是一个限制你使用深度学习框架的一个关键因素。你需要根据你自己的实际情况选择。
> 
> b. 硬件平台
> 通过上面这个表格,我们可以总结出当前的深度学习框架支持的硬件平台包括:CPU、GPU、Andriod、IOS、FPGA、ARM等多种平台。
> 如果你的电脑不支持GPU,你就只能选择其他的平台;
> 如果你自己擅长GPU,你可以使用的框架就很多;
> 如果你的项目制定的硬件是FPGA,你能使用的框架就会受到限制。
> 
> 因此,这也是一个限制你使用框架的关键因素。你需要根据自己的需要以及项目的需要去进行选择。
> 
> c. 操作系统
> 当前,这些框架支持的系统主要包括:Linux、Mac、Windows。几乎包括了所有的操作系统。但是对应不同的框架所支持的操作系统有很多不同。
> 如果你熟悉Linux系统,那么你几乎可以使用任何一个框架。
> 如果你想在Windows下使用这些框架,那么你就会受到很大的限制。同时会出现很多莫名其妙的问题。
> 
> 因此,你需要选择一个合适的操作系统,这可能会影响你的开发进程和使用的框架的数目。
> 
> d. 分布式系统
> 分布式系统可以将一个很大的任务分割开来,在不同的主机上进行运行,这可以大大的提高训练的速率,加快整个开发的过程。这对于大模型的训练具有至关重要的作用。当前对分布式系统有很好的支持的框架包括:tensorflow、CNTK、MXNet、Torch、Caffe。都有强大的后台。
> 如果你训练的数据量很少,你可以选择使用单片CPU或者单片GPU;
> 如果你训练的数据量较大,你可以选择使用多块CPU或者多块GPU;
> 如果你训练的数据量很大,你就需要使用到云服务器或者一个分布式系统集群。
>
> 因此,这也是一个影响你选择框架的一个因素。
> 总之,你需要综合考虑多个因素选择一个合适的深度学习框架。

  1. 这里我想要提出一个问题!!
> 我的问题是:为什么不能将这些框架整合起来,做一个大的框架,支持所有的系统,支持所有的语言,支持所有的平台,最重要的是只要一个?
> 这里的框架水平不一,但是它们的存在是由理由的。它们或多或少的都有自己的优势,何必单干呢。深度学习已经是一个趋势,应该建立一个国际组织,负责制定一个标准,收集他们的长处,做一个高性能的框架,这样不是更高效嘛。使用者也不再需要纠结使用哪一种框架。开发商也不需要进行独自的开发,维护。同时可以让更多的爱好者来共同维护它。这可能需要时间吧!希望这个愿望可以实现!

注意事项
[1] 该博客是本人原创博客,如果您对该博客感兴趣,想要转载该博客,请与我联系(qq邮箱:1575262785@qq.com),我会在第一时间回复大家,谢谢大家的关注。
[2] 由于个人能力有限,该博客可能存在很多的问题,希望大家能够提出改进意见。
[3] 如果您在阅读本博客时遇到不理解的地方,希望您可以联系我,我会及时的回复您,和您交流想法和意见,谢谢。
**[4] 本人业余时间承接各种本科毕设设计和各种小项目,包括图像处理(数据挖掘、机器学习、深度学习等)、matlab仿真、python算法及仿真等,有需要的请加QQ:1575262785详聊!!!**
2019-09-17 00:20:04 Jiajikang_jjk 阅读数 280
  • 深度学习框架Tensorflow案例实战视频课程

    深度学习框架Tensorflow案例实战视频培训课程概况: Tensorflow是谷歌开源的深度学习(包括机器学习)框架,伴随着人工智能业的兴盛其大名早已响彻云霄。本课程从Tensorflow安装开始讲起,从基本计算结构到深度学习各大神经网络,全程案例代码实战,一步步带大家入门如何使用深度学习框架Tensorflow,玩转Tensorflow模型训练、等所有知识点。

    30888 人正在学习 去看看 唐宇迪

前言

本篇博文旨在主要介绍一些常见的深度学习框架

一、背景介绍

目前常见的深度学习框架不尽相同,主要有TensorFlow、Caffe、Theano、Keras等,常见的深度学习框架如借图如下所示。这些深度学习框架被应用于计算机视觉、语音识别、自然语言处理与生物信息学等领域,并获取了极好的效果。本片博文就主要介绍一下当前深度学习领域影响力比较大的几个框架,只作为学习,还望小伙伴们对于不足之处多多包涵。
在这里插入图片描述

二、Theano

Theano最初诞生于蒙特利尔大学LIS实验室,于2008年开始开发,是第一个有较大影响力的 Python深度学习框架。
        Theano是Python是一个库,可用于定义、优化和计算数学表达式,特别是多维(numpy.ndaray)。在解决包含大量数据的问题时,使用Theano编程可实现比手写C语言更快的速度,而通过GPU加速, Theano甚至可以比基于CPU计算的C语言快上好几个数量级。 Theano结合了计算机代数系统(Computer Algebra System,cas)和优化编译器,还可以为多种数学运算生成定制的C语言代码。对于包含重复计算的复杂数学表达式的任务而言,计算速度很重要,因此这种CAS和优化编译器的组合是很有用的。对需要将每一种不同的数学表达式都计算一遍的情况, Theano可以最小化编译解析的计算量,但仍然会给出如自动微分那样的符号特征。
        Theano诞生于研究机构,服务于研究人员,其设计具有较浓厚的学术气息,但在工程设计上有较大的缺陷。一直以来, Theano因难调试、构建图慢等缺点为人所诟病。为了加速深度学习研究,人们在它的基础之上,开发了 Lasagne、 Blocks、 PyLearn22和Keras等第三方框架,这些框架以 Theano为基础,提供了更好的封装接口以方便用户使用。

三、TensorFlow

       1、2015年11月10日, Google宣布推出全新的机器学习开源工具TensorFlowTensorFlow最初是由 Google机器智能研究部门的 Google Brain团队开发,基于 Google2011年开发的深度学习基础架构DistBelief构建起来的。 TensorFlow主要用于进行机器学习和深度神经网络研究,但它是一个非常基础的系统,因此也可以应用于众多领域。
       2、TensorFlow在很大程度上可以看作Theano的后继者,不仅因为它们有很很多共同的开发者,而且它们还拥有相近的设计理念,都是基于计算图实现自动微分系统。TensorFlow使用数据流图进行数值计算,图中的节点代表数学运算,而图中的边则表在这些节点之间传递的多维数组(张量)
       3、TensorFlow编程接口支持Python和C++。随着1.0版本的公布,java、Go、R和Haskell API的 alpha版本也被支持。此外, TensorFlow还可在 Google Cloud和AWS中运 行。 TensorFlow还支持 Windows7、 Windows10和 Windows Server2016.由于 TensorFlow使用C++ Eigen库,所以库可在ARM架构上编译和优化。这也就意味着用户可以在各种服务器和移动设备上部署自己的训练模型,无须执行单独的模型解码器或者加载Python解释器。
作为当前最流行的深度学习框架, TensorFlow获得了极大的成功,对它的批评也不绝于耳,总结起来主要有以下四点:

·1、过于复杂的系统设计, TensorFlow在 GitHub代码仓库的总代码量超过100万行。这么大的代码仓库,对于项目维护者来说维护成为了一个难以完成的任务,而对读者来说,学习 TensorFlow底层运行机制更是一个极其痛苦的过程,并且大多数时候这种尝试以放弃告终。
·2、频繁变动的接口。 TensorFlow的接口一直处于快速迭代之中,并且没有很好地考虑向后兼容性,这导致现在许多开源代码已经无法在新版的 TensorFlow上运行,同时也间接导致了许多基于 TensorFlow的第三方框架出现BUG。
3、接口设计过于晦涩难懂。在设计 TensorFlow时,创造了图、会话、命名空间、 Place-Holder等诸多抽象概念,对普通用户来说难以理解。同一个功能, TensorFlow提供了多种实现,这些实现良莠不齐,使用中还有细微的区别,很容易将用户带入坑中。
4、·文档混乱脱节。 TensorFlow作为一个复杂的系统,文档和教程众多,但缺乏明显的条理和层次,虽然查找很方便,但用户却很难找到一个真正循序渐进的入门教程。

由于直接使用 TensorFlow的生产力过于低下,包括 Google官方等众多开发者尝试基于 TensorFlow构建一个更易用的接口,包括Keras、 Sonnet、 TFLearn、 TensorLayerSlim、Fold、 PrettyLayer等数不胜数的第三方框架每隔几个月就会在新闻中出现一次,但是又大多归于沉寂,至今 TensorFlow仍没有一个统一易用的接口。

四、Keras

       Keras是一个高层神经网络API,由纯Python编写而成并使用TensorFlow、Theano及CNTK作为后端。 Keras为支持快速实验而生,能够把想法迅速转换为结果。Keras应该是深度学习框架之中最容易上手的一个,它提供了一致而简洁的API,能够极大地减少一般应用下用户的工作量,避免用户重复造轮子。
       严格意义上讲, Keras并不能称为一个深度学习框架,它更像一个深度学习接口,它构建于第三方框架之上。 Keras的缺点很明显:过度封装导致丧失灵活性。 Keras最初作为Theano的高级API而诞生,后来增加了TensorFlow和CTK作为后端。为了屏蔽后端的差异性,提供一致的用户接口,Keras做了层层封装,导致用户在新增操作或是获取底层的数据信息时过于困难。同时,过度封装也使得 Keras的程序过于缓慢,许多BUG都隐藏于封装之中,在绝大多数场景下, Keras大部分框架中最慢的一个。
       学习 Keras十分容易,但是很快就会遇到瓶颈,因为它缺少灵活性。另外,在使用Keras的大多数时间里,用户主要是在调用接口,很难真正学习到深度学习的内容。总结下来:入门最简单,但是不够灵活,使用受限。

五、Caffe/Caffe2

       KerasCaffe的全称是Convolutional Architecture for Fast Feature Embedding,它是一个清晰、高效的深度学习框架,核心语言是C++,它支持命令行、 Python和 MATLAB接口,既可以在CPU上运行,也可以在GPU上运行。
       Caffe的优点是:简洁快速,缺点是缺少灵活性。不同于 Keras因为太多的封装导致灵活性丧失, Caffe灵活性的缺失主要是因为它的设计。在 Caffe中最主要的抽象对象是层,每实现一个新的层,必须要利用C++实现它的前向传播和反向传播代码,而如果想要新层运行在GPU上,还需要同时利用CUDA实现这一层的前向传播和反向传播。这种限制使得不熟悉C++和CUDA的用户扩展 Caffe十分困难。
       Caffe凭借其易用性、简洁明了的源码、出众的性能和快速的原型设计获取了众多用户,曾经占据深度学习领域的半壁江山。但是在深度学习新时代到来之时, Caffe已经表现出明显的力不从心,诸多问题逐渐显现(包括灵活性缺失、扩展难、依赖众多环境难以配置、应用局限等)。尽管现在在 GitHub上还能找到许多基于 Caffe的项目,但是新的项目已经越来越少。
       Caffe的作者从加州大学伯克利分校毕业后加入了 Google,参与过 TensorFlow的开发,后来离开 Google加入FAIR,担任工程主管,并开发了 Caffe2。Caffe2是一个兼具表现力、速度和模块性的开源深度学习框架。它沿袭了大量的 Caffe设计,可解决多年来在 Caffe的使用和部署中发现的瓶颈问题。 Caffe2的设计追求轻量级,在保有扩展性和高性能的同时, Caffe2也强调了便携性。 Caffe2从一开始就以性能、扩展、移动端部署作为主要设计目标。 Caffe2的核心C++库能提供速度和便携性,而其 Python和C++API使用户可以轻松地在Linux、 Windows、is、 Android,甚至 Raspberry Pi和NVIDIA Tegra上进行原型设计、训练和部署。
       Caffe2继承了 Caffe的优点,在速度上令人印象深刻。 Facebook人工智能实验室与应用机器学习团队合作,利用Caffe2大幅加速机器视觉任务的模型训练过程,仅需1小时就训练完 ImageNet这样超大规模的数据集。然而尽管已经发布半年多,开发一年多, Caffe2仍然是一个不太成熟的框架,官网至今没提供完整的文档,安装也比较麻烦,编译过程时常出现异常,在 GitHub上也很少找到相应的代码。
       极盛的时候,Caffe占据了计算机视觉研究领域的半壁江山,虽然如今 Caffe已经很少用于学术界,但是仍有不少计算机视觉相关的论文使用Caffe由于其稳定、出众的性能,不少公司还在使用 Caffe部署模型。Caffe2尽管做了许多改进,但是还远没有达到替代Caffe的地步,其次,文档不够完善,但性能优异,几乎全平台支持( Caffe2)适合生产环境。

六、MXNet

       MXNet是一个深度学习库,支持C++、 Python、r、 Scala Julia MATLAB JavaScript等语言;支持命令和符号编程;可以运行在CPU、GPU、集群、服务器、台式机或者移动设备上。 MXNet是CXXNet是的下一代, CXXNet借鉴了 Caffe的思想,但是在实现上更干净。在2014年的NIPS上,同为上海交大校友的陈天奇与李沐碰头,讨论到各自在做深度学习 Toolkits的项目组,发现大家普遍在做很多重复性的工作,例如文件 loading等。于是他们决定组建DMLC[ Distributied(Deep) Machine Learning Community],号召大家一起合作开发 MXNet,发挥各自的特长,避免重复造轮子。
       MXNet以其超强的分布式支持,明显的内存、显存优化为人所称道。同样的模型,MXNet往往占用更小的内存和显存,并且在分布式环境下, MXNet展现出了明显优于其他框架的扩展性能。
       由于 MXNet最初由一群学生开发,缺乏商业应用,极大地限制了 MXNet的使用。2016年11月, MXNet被AWS正式选择为其云计算的官方深度学习平台。2017年1月,MXNet项目进入 Apache基金会,成为 Apache的孵化器项目。
       尽管 MXNet拥有最多的接口,也获得了不少人的支持,但其始终处于一种不温不火的状态。个人认为这在很大程度上归结于推广不给力及接口文档不够完善。MXNet长期处于快速迭代的过程,其文档却长时间未更新,导致新手户难以掌握 MXNet,老用户常常需要查阅源码才能真正理解 MXNet接口的用法。

七、CNTK

        2015年8月,微软公司在 CodePlex上宣布由微软研究院开发的计算网络工具集CNTK将开源。5个月后,2016年1月25日,微软公司在他们的 GitHub仓库上正式开源了CNTK。早在2014年,在微软公司内部,黄学东博士和他的团队正在对计算机能够理解语音的能力进行改进,但当时使用的工具显然拖慢了他们的进度。于是,一组由志愿者组成的开发团队构想设计了他们自己的解决方案,最终诞生了CNTK。
        根据微软开发者的描述,CNTK的性能比 Caffe、Theano、TensoFlow等主流工具都要强。CNTK支持CPU和GPU模式,和 TensorFlow/Theano一样,它把神经网络描述成一个计算图的结构,叶子节点代表输入或者网络参数,其他节点代表计算步骤。
CNTK是一个非常强大的命令行系统,可以创建神经网络预测系统。CNTK最初是出于在 Microsoft内部使用的目的而开发的,一开始甚至没有 Python接口,而是使用了一种几乎没什么人用的语言开发的,而且文档有些晦涩难懂,推广不是很给力,导致现在用户比较少。但就框架本身的质量而言,CNTK表现得比较均衡,没有明显的短板,并且在语音领域效果比较突出。此外:社区不够活跃,但是性能突出,擅长语音方面的相关研究。

八、其他框架

        除了上述的几个框架,还有不少的框架,都有一定的影响力和用户。比如百度开源PaddlePaddle,CMU开发的 DyNet简洁无依赖符合C++11标准的tiny-dnn,使用Java开发并且文档极其优秀的Deeplearning44j,还有英特尔开源的 Nervana, Amazon开源的 DSSTNE。这些框架各有优缺点,但是大多流行度和关注度不够,或者局限于一定的领域,因此不做过多的介绍。此外,还有许多专门针对移动设备开发的框架,如CoreML、MDL,这些框架纯粹为部署而诞生,不具有通用性,也不适合作为研究工具,同样不做介绍。

2016-08-29 10:54:36 oDaiLiDong 阅读数 2205
  • 深度学习框架Tensorflow案例实战视频课程

    深度学习框架Tensorflow案例实战视频培训课程概况: Tensorflow是谷歌开源的深度学习(包括机器学习)框架,伴随着人工智能业的兴盛其大名早已响彻云霄。本课程从Tensorflow安装开始讲起,从基本计算结构到深度学习各大神经网络,全程案例代码实战,一步步带大家入门如何使用深度学习框架Tensorflow,玩转Tensorflow模型训练、等所有知识点。

    30888 人正在学习 去看看 唐宇迪
 CaffeTorchTheanoTensorFlow
LanguageC++, PythonLuaPythonPython
PretrainedYes ++Yes ++Yes (Lasagne)Inception
Multi-GPU: Data parallelYesYesYesYes
Multi-GPU: Model parallelNoYesExperimentalYes (best)
Readable source codeYes (C++)Yes (Lua)NoNo
Good at RNNNoMediocreYesYes (best)
  
  
2019-04-03 20:47:53 BaiHuaXiu123 阅读数 3375
  • 深度学习框架Tensorflow案例实战视频课程

    深度学习框架Tensorflow案例实战视频培训课程概况: Tensorflow是谷歌开源的深度学习(包括机器学习)框架,伴随着人工智能业的兴盛其大名早已响彻云霄。本课程从Tensorflow安装开始讲起,从基本计算结构到深度学习各大神经网络,全程案例代码实战,一步步带大家入门如何使用深度学习框架Tensorflow,玩转Tensorflow模型训练、等所有知识点。

    30888 人正在学习 去看看 唐宇迪

不管是前端技术框架还是后端技术框架以及在深度学习技术框架,我们在决定使用前,都需要考虑以下几个方面,也就是我们在选型上通用的依据,这里以深度学习框架选型举例子:
在这里插入图片描述
1) 性能方面
性能方面一部分主要由实现该框架的语言决定,还有一小部分原因该框架的实现的架构决定。理论上说,运行最快的仍旧是C或C++一类,离着CPU指令近些语言效率要高很多。
之前有篇文章专门介绍过深度学习流行的框架比较,有Torch,TensorFlow,Caffe等多种框架,在相同的条件下Torch运行速度要快很多,而TensorFlow在这几个框架中是比较慢的,但是在真正的工程应用中造成差距大大多来自于样本的数量和网络设计等方面,这个方面的差距往往是10倍或者100倍,而语言的效率与其相比几乎可以忽略不计了。所以语言的性能就不是最主要的参考标准了。
2)社区的活跃度
这些技术框架,各自的社区的活跃度是个非常重要的参考因素。活跃的社区就意味着很多人在使用这个框架,会有更多人贡献代码,提交bug,修复bug,因此用它做起项目的风险就非常小,而我们学起来也比较容易,因此也会少踩很多坑。
3)深度学习语言
深度学习框架几乎都支持Python的“驱动“”,或者俗称之为接口。也不排除少部分框架只支持原生接口,例如Torch只支持Lua脚本,CNTK只支持C++。。。

综上所述:应该说TensorFlow在这些方便做的都是非常不错的:
1)有着非常活跃的社区
2)来自于世界最大软件公司谷歌支持开发和维护,比较有保障
2)语言Python,性能虽然并不快,但是满足目前绝大多数工作已经非常足够了,往往那种数量级效率的提升是无法通过变更一个框架实现的。
所以总的来讲TensorFlow应该是现有深度学习框架中比较适合用来进行工程应用的

资源下载
资源下载
在这里插入图片描述

深度学习框架图

阅读数 1358

没有更多推荐了,返回首页