https://imaginghub.com/blog/10-a-comparison-of-four-deep-learning-frameworks-tensorflow-cntk-mxnet-and-caffe

This article will focus on some basic information about all of these, and some key points of differentiation to keep in mind which will allow you to choose the best framework for a product or project you are thinking about or already working on.

Tensorflow

We’ll start with Tensorflow, which is an open-source deep learning framework developed by Google, with a goal of creating a uniform way of producing deep learning research or products. It works by utilizing symbolic creation of computation graphs and has both a Python, C++, and a Java  implementation (which is in development right now). It is worth noting that despite a small core written in C++, much of the functionality is written in Python, causing it to have certain speed restrictions and generally less efficient in data operations than frameworks written almost completely in C++ such as CNTK and MXNet, for example. Being heavily pushed both within the company internally and in the public externally, Tensorflow has a huge support community and is used for both industry and research, being arguably the most popular framework in use today. By using computation graphs, it easy to distribute processing across many GPUs and can be distributed to the cloud quite easily, and Google even has their own cloud computing service they offer – Google Web Services. One of the advantages about this service is that they use TPUs, or a “tensor processing units,” a Google-developed chip that is even more optimized than GPUs for deep learning applications, something which should definitely be considered especially in industry applications. Another huge benefit of Tensorflow is Tensorboard, which is a powerful tool that allows the user to visualize many different aspects of your model and your data, allowing you to create the proper type of network and optimize it much more quickly and effectively than many frameworks. It also allows for easy mobile support as do many of the other frameworks we will discuss, the next of which will be CNTK.

CNTK

CNTKis an open-source deep learning network developed by Microsoft, which has quite a long history, originally started by researchers working on voice recognition technologies, although it has since expanded to a general use framework. It works similarly to Tensorflow, utilizing symbolic the creation of computation graphs, and is arguably even easier to run on a distributed network in the cloud, simply requiring a few lines of code. It also runs a significant amount faster and with a higher degree of accuracy than Tensorflow, since the core and the functionality of the framework is all written in C++, which is more efficient at data processing. It is important to note that there is also a Python framework for CNTK as well. Also, just like Tensorflow, it allows for easy support across mobile operating systems. These advantages make it better for development in industry in many aspects, although the versatility is not as great nor does it allow for as much customization as Tensorflow does.

MXNet

The next framework that is going to be discussed is MXNet, which is an open-source framework developed by a variety of industry and university partners, and is currently in the Apache Incubator program. It offers a unique set of advantages over both Tensorflow and CNTK. First of all, it has native support for a wider range of languages – Python, C++, R, and Scala. It also allows for different parts of your models to use either symbolic or imperative programming, which neither Tensorflow nor CNTK allows. However, they use an interesting trick which allows it to be just as easily distributed to the cloud – each section of either symbolic or imperative programming is then treated as a ‘node’ in a computation graph, creating a computational graph layer on top of all the operations (either symbolic or imperative), after which it works similarly to both Tensorflow and CNTK. Also much like CNTK, it is much faster than Tensorflow, and both MXNet and CNTK are well-suited for large-scale industry purposes because of this. MXNet has easy support for mobile operating systems, just as the frameworks discussed thus far. It is officially supported by Amazon Web Services, which is one of the most popular cloud computing services. However, one caveat to this framework is that MXNet has poor support for recurrent neural networks (RNNs), which are great for things like pattern recognition and prediction of temporal data. It also has a smaller community for support, an area which Tensorflow beats both MXNet and CNTK.

Caffe (not to be confused with Facebook’s Caffe2)

The last framework to be discussed is Caffe, an open-source framework developed by Berkeley Artificial Intelligence Research (BAIR). It was primarily built for computer vision applications, which is an area which still shines today. It is also fairly fast, being written in C++. The original was written way back in 2013, and is therefore missing many modern features that the other three discussed have, and although still faster than Tensorflow, it is not as fast as either MXNet or CNTK. Another area that it falters is that once you venture outside of using convolutional neural networks (CNNs), which are generally used for computer vision programs, its usefulness drops significantly as it was not written for things like RNNs or especially even more modern networks such as generative adversarial networks (GANs). One notable feature of Caffe is that it was designed with ease-of-use in mind, making many key functions’ implementation not take more than a few lines of code, such as switching from training on a GPU to a CPU and vice versa. One important thing to note is that Facebook has developed an open-source project on top of Caffe, called Caffe2, which builds a top of Caffe more state-of-the-art features, and is worth an investigation all of its own. And although Caffe2 has seen a lot of uptake, Caffe still has fairly widespread use throughout both research and industry.

Résumé

Overall, all these frameworks – Tensorflow, CNTK, MXNet, and Caffe – all deserve their place on this list and each offer their own unique pros and cons. Right now, it seems that Tensorflow has the largest user pool and is being developed more quickly than some of the others, and therefore also has a lot of community support along with state-of-the-art features, making it powerful for both research purposes and industry. CNTK, having its core and functionality written in C++, is significantly faster than Tensorflow and just as easy to work with across the mobile devices or cloud computing, making it another powerful choice for industry development. MXNet also offers similar speed advantages over Tensorflow and has native support for a wide variety of languages, however there are models that it has bad support for such as RNNs, which in some cases make it another great choice when developing for industry. Lastly, Caffe again offers speed advantages over Tensorflow and is particularly powerful when it comes to computer vision development, however being developed early on it was not built with many state-of-the-art features available as in the others, and I would highly suggest also taking a look at Caffe2 if thinking of using this framework. Overall, this article gives you a general idea of the different types of use cases for these four networks, and once you decide on which one to use I highly recommend taking a much deeper look into that particular framework.

Comparing deep learning frameworks: Tensorflow, CNTK, MXNet, & Caffe的更多相关文章

  1. Comparison of Symbolic Deep Learning Frameworks

    http://blog.revolutionanalytics.com/2016/08/deep-learning-part-1.html Deep Learning Part 1: Comparis ...

  2. Summary on deep learning framework --- TensorFlow

     Summary on deep learning framework --- TensorFlow Updated on 2018-07-22 21:28:11 1. Check failed: s ...

  3. [ Deep Learning ] Keras & TensorFlow安装依赖包

    OS:Mac Python:3.6 一.先安装Keras,再安装TensorFlow 1. 安装Keras Package Version---------- -------h5py 2.7.1 Ke ...

  4. CoRR 2018 | Horovod: Fast and Easy Distributed Deep Learning in Tensorflow

    将深度学习模型的训练从单GPU扩展到多GPU主要面临以下问题:(1)训练框架必须支持GPU间的通信,(2)用户必须更改大量代码以使用多GPU进行训练.为了克服这些问题,本文提出了Horovod,它通过 ...

  5. 课程一(Neural Networks and Deep Learning),第一周(Introduction to Deep Learning)—— 1、经常提及的问题

    Frequently Asked Questions Congratulations to be part of the first class of the Deep Learning Specia ...

  6. deep learning framework(不同的深度学习框架)

    常用的deep learning frameworks 基本转自:http://www.codeceo.com/article/10-open-source-framework.html 1. Caf ...

  7. Coursera Deep Learning 2 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week1, Assignment(Regularization)

    声明:所有内容来自coursera,作为个人学习笔记记录在这里. Regularization Welcome to the second assignment of this week. Deep ...

  8. What are some good books/papers for learning deep learning?

    What's the most effective way to get started with deep learning?       29 Answers     Yoshua Bengio, ...

  9. (转) Learning Deep Learning with Keras

    Learning Deep Learning with Keras Piotr Migdał - blog Projects Articles Publications Resume About Ph ...

随机推荐

  1. HDU 3361 ASCII (水题)

    题意: 析:不说话. #include <cstdio> #include <string> #include <cstdlib> #include <cma ...

  2. ScreenCapturePro2 for Joomla_3.4.7-ckeditor4x

    1.1. 与Joomla_3.4.7整合-ck4 示例下载:Joomla_3.4.7,   1.1.1. 添加screencapture文件夹 路径:/media/screencapture   1. ...

  3. 编写高质量代码改善C#程序的157个建议——建议67:慎用自定义异常

    建议67:慎用自定义异常 除非有充分的理由,否则不要创建自定义异常.如果要对某类程序出错做特殊处理,那就自定义异常.需要自定义异常的理由如下: 1)方便测试.通过抛出一个自定义的异常类型实例,我们可以 ...

  4. 解决word2013老是打开未响应情况

    问题:自己装了word2013时,每次打开word或者工作时,老是出现一个圈圈,提示未反应,是否关闭程序这样的提示: 解决方法:文件->选项->高级->显示->禁用硬件加速,将 ...

  5. PyCharm社区版+Django搭建web开发环境-1

    PyCharm开源社区版不像商业版那样可以直接通过Django来创建项目,必须通过以下几个步骤进行: 1. 创建项目:在cmd命令行下输入:django-admin startproject Demo ...

  6. log4net 入门使用

    log4net 是dotnet平台下的一个日记记录组件. 一  NuGet中安装log4net包: 二 配置log4net.config文件 配置文件内容: <?xml version=&quo ...

  7. [LeetCode 题解]: Flatten Binary Tree to Linked List

    Given a binary tree, flatten it to a linked list in-place. For example,Given 1 / \ 2 5 / \ \ 3 4 6 T ...

  8. 新入门PGSQL数据库(尝试利用PGPOOL实现分布式),摘录笔记

    概念: PostgreSQL (pronounced "post-gress-Q-L") is an open source relational database managem ...

  9. sonar资料

    看过的sonar比较好的在线参考资料(自认为): 1.<使用 Sonar 进行代码质量管理>>,地址:http://www.ibm.com/developerworks/cn/jav ...

  10. Java集合框架(Collection Framework)学习之 HashMap

    从API文档可以得到HashMap的以下几个特点: 基于哈希表(hash table)实现,并且是链式哈希表 允许空值和空键(null=null 键值对) HashMap与Hashtable基本相同, ...