深度学习开源框架,AI从业者的选择之路
这个表格。这里我们按照每个深度学习平台的底层语言和用户语言进行总结,可以得到下表。
其中 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 在多年前就已具有符号计算的功能,但鉴于其商业软件的限制,符号计算并没有在机器学习应用中被大量采用。
深度学习由于其网络的复杂性
- 大联大友尚集团推出基于Fairchild器件的LED照明电源解决方案(11-19)
- AI/机器学习/深度学习三者的区别是什么?(09-10)
- 阿里AI LABS与庆科信息联合推出儿童语音智能解决方案(04-05)
- 盘点人工智能技术的应用领域(05-01)
- foxmail如何设置有自定义背景的邮件模版(04-11)
- 电脑组建RAID 0的要诀(03-01)