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. C++学习--入口函数

    在学习第一个C++程序的时候发现控制台程序的入口函数是int _tmain而不是main,查了资料才发现_tmain()是为了支持unicode所使用的main一个别名,宏定义在<stdafx. ...

  2. ScreenCapturePro2 for Joomla_3.4.7-tinymce4x

    1.1. 与Joomla_3.4.7-tinymce4x整合 示例下载:Joomla_3.4.7,   1.1.1. 添加screencapture文件夹   1.1.2. 2.添加插件文件夹 路径: ...

  3. Makefile模板

    CC = gcc LD = gcc CFLAGS = -Wall -c LDFLAGS = SRC_DIRS = src test INC_DIRS = inc OBJ_DIR = obj OUT_D ...

  4. 使用JavaScript获取CSS伪元素属性

    我们可以通过DOM元素的 style 属性获取基本的CSS样式值, 但怎么获取CSS伪元素属性呢? 如下 // 获取 .element:before 的 color 值 var color = win ...

  5. MySQL中如何为查询的数据添加自增序号、顺序呢?

    背景介绍 很多时候我们在使用mysql查询数据的时候都会遇到一个问题,就是查询出来了一堆数据,但是查询的数据的表并没有序号,然而部分数据库显示工具是有外带序号显示,但是这种序号不是由sql产生的,而是 ...

  6. UT源码 065

    NextDate函数问题 NextDate函数说明一种复杂的关系,即输入变量之间逻辑关系的复杂性 NextDate函数包含三个变量month.day和year,函数的输出为输入日期后一天的日期. 要求 ...

  7. IT技术公众号推荐

    获取二维码方法:http://open.weixin.qq.com/qr/code/?username=公众账号,例如:cjscwe_2015   目录 全栈 编程语言 前端开发 移动开发 数据库 操 ...

  8. windows7下安装MySQL-5.6.34

    下载安装包"mysql-5.6.34-winx64.zip",放到某个文件夹中,解压安装包,重命名文件夹名为"mysql-5.6.34"   修改"m ...

  9. EDM模板制作规范

    为了保证最大的兼容性,在制作HTML的email页面时,请严格按照规范来书写: 1.页面宽度推荐500px,最大不要超过750px: 2.制作HTML的email页面时,不使用css+div来布局,最 ...

  10. Transaction And Lock--两种方式实现可重复读

    一些需求要求两次查询数据之间不允许数据被修改,即可重复读取 可重复读REPEATABLE READ与串行化SERIALIZABLE的区别在于串行化要求满足该查询的数据不被修改且无新满足该查询条件的数据 ...