Comparing deep learning frameworks: Tensorflow, CNTK, MXNet, & Caffe
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的更多相关文章
- Comparison of Symbolic Deep Learning Frameworks
		
http://blog.revolutionanalytics.com/2016/08/deep-learning-part-1.html Deep Learning Part 1: Comparis ...
 - Summary on deep learning framework --- TensorFlow
		
Summary on deep learning framework --- TensorFlow Updated on 2018-07-22 21:28:11 1. Check failed: s ...
 - [ Deep Learning ] Keras & TensorFlow安装依赖包
		
OS:Mac Python:3.6 一.先安装Keras,再安装TensorFlow 1. 安装Keras Package Version---------- -------h5py 2.7.1 Ke ...
 - CoRR 2018 | Horovod: Fast and Easy Distributed Deep Learning in Tensorflow
		
将深度学习模型的训练从单GPU扩展到多GPU主要面临以下问题:(1)训练框架必须支持GPU间的通信,(2)用户必须更改大量代码以使用多GPU进行训练.为了克服这些问题,本文提出了Horovod,它通过 ...
 - 课程一(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 ...
 - deep learning framework(不同的深度学习框架)
		
常用的deep learning frameworks 基本转自:http://www.codeceo.com/article/10-open-source-framework.html 1. Caf ...
 - 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 ...
 - 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, ...
 - (转) Learning Deep Learning with Keras
		
Learning Deep Learning with Keras Piotr Migdał - blog Projects Articles Publications Resume About Ph ...
 
随机推荐
- 【微服务架构】SpringCloud之Ribbon(四)
			
一:Ribbon是什么? Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起.Ribbon客户端组件提供一系列完善的配置项如连接 ...
 - PHP开发实用-阿里短信服务(Short Message Service)
			
步骤 1 使用阿里云短信服务正常发短信需要 短信签名 短信模板 1申请短信签名 根据用户属性来创建符合自身属性的签名信息.企业用户需要上传相关企业资质证明,个人用户需要上传证明个人身份的证明. ...
 - .CHM文件使用问题
			
1.查看时内容为空---解除锁定 解决方案:选中xx.CHM,右键点击属性,常规选项卡中点击“解除锁定”.OK了 2.内容显示乱码---修改浏览器编码 IE中的查看 > 编码 > 自动选择 ...
 - HttpRunnerManager接口自动化测试框架在win环境下搭建教程
			
近几日一直在研究如何把接口自动化做的顺畅,目前用的是轻量级jmeter+ant+Jenkins自动化测试框架,目前测试界的主流是python语言,所以一直想用搭建一个基于python的HttpRunn ...
 - OI图论 简单学习笔记
			
网络流另开了一个专题,所以在这里就不详细叙述了. 图 一般表示为\(G=(V,E)\),V表示点集,E表示边集 定义图G为简单图,当且仅当图G没有重边和自环. 对于图G=(V,E)和图G2=(V2,E ...
 - [转]解读Unity中的CG编写Shader系列7——漫反射
			
如果前面几个系列文章的内容过于冗长缺乏趣味着实见谅,由于时间原因前面的混合部分还没有写完,等以后再补充,现在开始关于反射的内容了.折射与反射在物理世界中,光的反射与折射往往是同时存在的,光源由真空或者 ...
 - 691. Stickers to Spell Word
			
We are given N different types of stickers. Each sticker has a lowercase English word on it. You wou ...
 - 3,ThreadGroup 的使用场景以及用法
			
1 一个大型任务,可分成多个独立的子线程并发进行,最后等待所有的子线程执行结束然后继续往下执行, 使用场景比如 要查找某个用户的最近三个月的通话记录,起 3 个子线程,分别查找最近三个月的记录,然后通 ...
 - 渐进增强 VS 优雅降级
			
渐进增强(Progressive Enhancement):一开始就针对低版本浏览器进行构建页面,完成基本的功能,然后再针对高级浏览器进行效果.交互.追加功能达到更好的体验. 优雅降级(Gracefu ...
 - mysql的联合索引的误解
			
https://www.zhihu.com/question/36996520 之前对于联合索引有一个误区, 假设 name,age为一个联合索引 5条索引记录 a 10 b 5 c 12 c 15 ...