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. static在C和C++里各代表什么含义

    转自:http://blog.csdn.net/wanglongfei_hust/article/details/10011503 static关键字有三种使用方式,其中前两种只指在C语言中使用,第三 ...

  2. PHP中文乱码解决办法[转]

    一.首先是PHP网页的编码1.     php文件本身的编码与网页的编码应匹配a.     如果欲使用gb2312编码,那么php要输出头:header(“Content-Type: text/htm ...

  3. SpringCloud教程 | 第四篇:断路器(Hystrix)(Finchley版本)

    在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用.为了保证其高可用,单个服务 ...

  4. CodeForces 588E A Simple Task(线段树)

    This task is very simple. Given a string S of length n and q queries each query is on the format i j ...

  5. DFS实现全排列

    复习一下DFS实现全排列,具体思想见:https://www.cnblogs.com/chiweiming/p/9279858.html public class Main{ static int a ...

  6. 修复DBGrideh使用TMemTableEh在Footers求平均值为0的Bug

    在一个项目中,使用DBGrideh,当使用自带的内存数据集时,对于Footers添加的求平均值,一直显示为0,其他汇总数据都是可以的,而切换使用TClientDataSet或者TADODataSet, ...

  7. python 爬虫登录保存会话去获取只有登录能获取的数据

    #!/usr/bin/env python # -*- coding: utf-8 -*- # import ConfigParser import datetime import sys impor ...

  8. [LeetCode 题解]:Combinations

    Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. For exampl ...

  9. [Erlang01] 使用catch与try catch避免嵌套nest_case

    catch 如此好用,为什么官方还是推荐用try catch? 1. catch 的用法非常简单: catch case do_check(Test) of {ok,Result} -> do_ ...

  10. Transaction And Lock--已提交读快照

    --===================================================== --行版本控制已提交读ALTER DATABASE DB5 SET READ_COMMI ...