微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 深度学习开源框架,AI从业者的选择之路

深度学习开源框架,AI从业者的选择之路

时间:10-26 来源:雷锋网 点击:

这个表格。这里我们按照每个深度学习平台的底层语言和用户语言进行总结,可以得到下表。

  

  其中 Keras 通过 Theano, TensorFlow 作为底层进行建模。

  我们可以看到这样的趋势:

  深度学习底层语言多是 C++ / C 这样可以达到高运行效率的语言。

  操作语言往往会切近实际,我们大致可以断定 Python 是未来深度学习的操作平台语言,微软在 CNTK 2.0 加入了对 Python 的支持。

  当然,还有不少平台可以通过脚本的方式配置网络并且训练模型。

  从格局上来说,Python 作为深度学习建模的基本语言是可以确定的。如果你最喜欢编程语言是 Python,恭喜您,大多数平台都可以和你的技术无缝衔接。如果是 Java 也不用担心,不少平台也具有 Java 支持,Deeplearning4J 还是一个原生的 Java 深度学习平台。

  标准 2: 和相关机器学习、数据处理生态整合的紧密程度

  这里我们要提一下现在主要的数据处理工具,比较全面的数据分析工具包括 R 及其相关生态,Python 及其相关生态,小众一点的还包括 Julia 及其相关生态。

  完成深度学习建模等任务之后,和生态的整合也尤为重要。

  我们可以发现,上面和 Python, R, 整合较为紧密,这里 Keras 生态(TensorFlow, Theano), CNTK, MXNet, Caffe 等占有大量优势。

  同时 Caffe 具有大量图像处理包,对数据观察也具有非常大的优势。

  标准 3:通过此平台做深度学习之外,还能做什么?

  下图是本次公开课的核心:

  

  其实深度学习平台在创造和设计时的侧重点有所不同,我们按照功能可以将深度学习平台分为上面六个方面:

  CPU+GPU控制,通信:这一个最低的层次是深度学习计算的基本层面。

  内存、变量管理层:这一层包含对于具体单个中间变量的定义,如定义向量、矩阵,进行内存空间分配。

  基本运算层:这一层主要包含加减乘除、正弦、余弦函数,最大最小值等基本算数运算操作。

  基本简单函数:

  ○ 包含各种激发函数(acTIvaTIon funcTIon),例如 sigmoid, ReLU 等。

  ○ 同时也包含求导模块

  神经网络基本模块,包括 Dense Layer, ConvoluTIon Layer (卷积层), LSTM 等常用模块。

  最后一层是对所有神经网络模块的整合以及优化求解。

  众多机器学习平台在功能侧重上是不一样的,我将他们分成了四大类:

  1. 第一类是以 Caffe, Torch, MXNet, CNTK 为主的深度学习功能性平台。这类平台提供了非常完备的基本模块,可以让开发人员快速创建深度神经网络模型并且开始训练,可以解决现今深度学习中的大多数问题。但是这些模块很少将底层运算功能直接暴露给用户。

  2. 第二类是以 Keras 为主的深度学习抽象化平台。Keras 本身并不具有底层运算协调的能力,Keras 依托于 TensorFlow 或者 Theano 进行底层运算,而 Keras 自身提供神经网络模块抽象化和训练中的流程优化。可以让用户享受快速建模的同时,具有很方便的二次开发能力,加入自身喜欢的模块。

  3. 第三类是 TensorFlow。TensorFlow 吸取了已有平台的长处,既能让用户触碰底层数据,又具有现成的神经网络模块,可以让用户非常快速的实现建模。TensorFlow 是非常优秀的跨界平台。

  4. 第四类是 Theano, Theano 是深度学习界最早的平台软件,专注底层基本的运算。

  所以对平台选择可以对照上图按照自己的需求选用:

  如果任务目标非常确定,只需要短平快出结果,那么第 1 类平台会适合你。

  如果您需要进行一些底层开发,又不想失去现有模块的方便,那么第 2、3 类平台会适合你。

  如果你有统计、计算数学等背景,想利用已有工具进行一些计算性开发,那么第 3, 4 类会适合你。

  这里我介绍下深度学习的一些副产品,其中一个比较重要的功能就是符号求导。

  图计算和符号求导:深度学习对开源社区的巨大贡献

  大家可能会有疑问:我能训练出来深度学习模型就蛮好的了,为什么需要接触底层呢?

  这里我先介绍下深度学习的一些副产品,其中一个比较重要的功能就是符号求导。符号求导英文是 Symbolic Differentiation,现在有很多有关的文献和教程可以使用。

  符号求导是什么意思?

  以前我们做机器学习等研究,如果要求导往往需要手动把目标函数的导数求出来。最近一些深度学习工具,如 Theano, 推出了自动化符号求导功能,这大大减少了开发人员的工作量。

  当然,商业软件如 MatLab, Mathematica 在多年前就已具有符号计算的功能,但鉴于其商业软件的限制,符号计算并没有在机器学习应用中被大量采用。

深度学习由于其网络的复杂性

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top