深度学习|高阶机器学习库——Theano

高阶机器学习中必不可少的Theano框架的深度学习!

Theano

深度学习|高阶机器学习库——Theano

Theano 诞生于2008年,由蒙特利尔大学 Lisa Lab 团队开发并维护,是一个高性能的符 计算及深度学习库。因其出现时间早,可以算是这类库的始祖之一,也一度被认为是深度学习研究和应用的重要标准之一。Theano 的核心是一个数学表达式的编译器,专门为处理大规模神经 络训练的计算而设计。它可以将用户定义的各种计算编译为高效的底层代码,并链接各种可以加速的库,比如 BLAS、CUDA 等。Theano 允许用户定义、优化和评估包含多维数组的数学表达式,它支持将计算装载到 GPU (Theano 在 GPU 上性能不错,但是 CPU 上较差)。与 Scikit-learn 一样,Theano 也很好地整合了 NumPy,对 GPU 的透明让 Theano 可以较为方便地进行神经 络设计,而不必直接写 CUDA 代码。Theano 的主要优势如下:

  1. 集成 NumPy,可以直接使用 NumPy 的 ndarray,API 接口学习成本低;
  2. 计算稳定性好,比如可以精准地计算输出值很小的函数(像 log(1+x));
  3. 动态地生成 C 或者 CUDA 代码,用以编译成高效的机器代码;

因为 Theano 非常流行,有许多人为它编写了高质量的文档和教程,用户可以方便地查找 Theano 的各种 FAQ,比如如何保存模型、如何运行模型等。不过 Theano 更多地被当作一个研究工具,而不是当作产品来使用。虽然 Theano 支持 Linux、Mac 和 Windows,但是没有底层 C++的接口,因此模型的部署非常不方便,依赖于各种 Python 库,并且不支持各种移动设备,所以几乎没有在工业生产环境的应用。Theano 在调试时输出的错误信息非常难以看懂,因此 DEBUG 时非常痛苦。同时,Theano 在生产环境使用训练好的模型进行预测时性能比较差,因为预测通常使用服务器 CPU(生产环境服务器一般没有 GPU,而且 GPU 预测单条样本延迟高反而不如 CPU),但是 Theano 在 CPU 上的执行性能比较差。

Theano 在单 GPU 上执行效率不错,性能和其他框架类似。但是运算时需要将用户的 Python 代码转换成 CUDA 代码,再编译为二进制可执行文件,编译复杂模型的时间非常久。此外,Theano 在导入时也比较慢,而且一旦设定了选择某块 GPU,就无法切换到其他设备。目前,Theano 在 CUDA 和 cuDNN 上不支持多 GPU,只在 OpenCL 和 Theano 自己的 gpuarray 库上支持多 GPU 训练,速度暂时还比不上 CUDA 的版本,并且 Theano 目前还没有分布式的实现。不过,Theano 在训练简单 络(比如很浅的 MLP)时性能可能比 TensorFlow 好,因为全部代码都是运行时编译,不需要像 TensorFlow 那样每次 feed mini-batch 数据时都得通过低效的 Python 循环来实现。

更多行业资讯,更新鲜的技术动态,尽在学院。

深度学习|高阶机器学习库——Theano

标签:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年1月10日
下一篇 2017年1月10日

相关推荐

发表回复

登录后才能评论