• 深度学习框架caffe/CNTK/Tensorflow/Theano/Torch的对比


    在单GPU下,所有这些工具集都调用cuDNN,因此只要外层的计算或者内存分配差异不大其性能表现都差不多。

    Caffe:

    1)主流工业级深度学习工具,具有出色的卷积神经网络实现。在计算机视觉领域Caffe仍然是最流行的工具包,他有很多扩展,但是由于

    一些遗留的架构问题,它对递归网络和语言建模的支持很差。此外,在caffe种图层需要使用C++定义,而网络则使用protobuf定义。

    2)caffe支持pycaffe接口,但这仅仅是用来辅助命令行接口的,而即便是是使用pycaffe也必须使用Protobuf.

    3)基于C++,因此可以在多种是设备上编译,具有跨平台性,在部署方面是最佳选择。

    4)性能简单快速

    5)算平均水准,痛点在于需要使用C++定义图层,而模型需要使用protobuf定义。如果想支持CPU和GPU,用户还必须实现额外的函数如,Forward_gpu和Backward_gpu;

    对于自定义的层类型,还必须为其分配一个int类型的ID,并将其添加到proto文件中。

    CNTK:

    1)目前已经发展成为一个通用的、平台独立的深度学习系统。

    2)没有python或者其他高级语言的接口。

    3)与Caffe一样,也是基于C++并且是跨平台的,部署非常简单,但它不支持ARM构架,这限制了其在移动设备上的能力。

    4)性能简单快速

    TensorFlow:

    1)是一个理想的RNN(递归网络神经)API和实现,TensorFlow使用向量运算的符号图方法,使得新网络的指定变得相当容易,但TensorFlow

    并不支持双向RNN和3D卷积,同时公共版本的图定义也不支持循环和条件控制,这使得RNN的实现并不理想,因为必须要使用Python循环且

    无法进行图编译优化。

    2)支持python和c++接口。

    3)由于它使用了Eigen而不是BLAS类库,所以能够基于ARM架构编译和优化。用户可以将训练好的模型部署到多种设备上面,不需要实现单独的

    模型解码器或者加载python/LuaJIT解释器。他的模型可以部署到Windows设备上。

    4)架构清晰,采用模块化设计,支持多种前端和执行平台

    Theano:

    1)支持大部分的先进网络,现在很多研究想法都源于Theano,他引领了符号图在编程网络中使用的趋势,Theano的符号API支持循环控制,让

    RNN实现更加容易且高效。

    2)支持python接口

    3)缺少底层接口,并且其python解释器也很低效,对工业用户而言缺少吸引力。跨平台,模型能够部署到Windows环境上。

    4)架构变态,整个代码库都是Python的,就来你C/cuda代码也要被打包为Python字符串,这使得它难以导航、调试、重构和维护。

    Torch:

    1)对卷积网络的支持非常好。TensorFlow和Theano中时域卷积可以通过conv2d来实现,但这样做有点取巧;

    2)在luaJIT上运行,与c++c#以及JAVA比较,速度相当快,性能更好,但是Lua不是主流的语言。

    3)需要LuaJIT的支持,集成方面难度大,使得他的吸引力不如CaffeCNTKTensorFlow等直接支持C++框架。

    Caffe、CNTK、TensorFlow和Theano都在所有的系统上运行,而Torch不支持Windows。

  • 相关阅读:
    google
    学习Linux第六天
    对比教学大纲
    周 记
    《世界是数字的》读后感
    《我是一只IT小小鸟》读后感
    前端小知识
    JavaScript 执行机制
    执行栈和任务队列
    支付宝前端员工培训手册
  • 原文地址:https://www.cnblogs.com/liang2713020/p/6690480.html
Copyright © 2020-2023  润新知