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 ...
随机推荐
- 编写高质量代码改善C#程序的157个建议——建议77: 正确停止线程
建议77: 正确停止线程 开发者总尝试对自己的代码有更多的控制.例如,“让那个还在工作的线程马上停止下来”.然而,并非我们想怎样就可以怎样的,这至少涉及两个问题. 第一个问题 正如线程不能立即启动一样 ...
- Quartus中代码字体大小的调整方法
Quartus中代码大小的调整方法 网友 "一纸玫瑰"整理 第一步:点击Tools(工具) 第二步:点击Options(选项) 第三步:Text Editor(文本编辑)/Font ...
- FileInputStream和FileOutStream的使用——文件字节输入/输出流
最近又退回到java EE的学习,这篇博客就来讲解一下字节流中最重要的两个类FileInputStream和FileOutputStream的用法: FileInputStream:全称是文件字节输入 ...
- POJ 3581 Sequence(后缀数组)
Description Given a sequence, {A1, A2, ..., An} which is guaranteed A1 > A2, ..., An, you are to ...
- Middleware / 中间件
中间件格式 module.exports = options => { return (ctx, next) => { // do something } } 中间件格式为一个高阶函数,外 ...
- .net core2.1 CookieHelper
/// <summary> /// ** 描述:Cookie for .net core2.1 /// ** 创始时间:2018-11-19 /// ** 修改时间:- /// ** 作者 ...
- RHEL因为selinux设置失误,无法重启问题。(centos适用)
今天做FTP模拟的时候selinux设置出现失误.导致系统无法重新启动.出现如下界面 Failed To Load SELinux policy.freezing .. 网上找了下,解决方法如下: 开 ...
- java数据库学习
//编写db类/* a加载驱动 驱动类要全路径 包名+类名 suround with try/catch * b设置参数url user pwd * c.连接数据库(import 'Connectio ...
- 洛谷P5265 【模板】多项式反三角函数
题面 传送门 题解 我数学好像学得太差了 据说根据反三角函数求导公式 \[{d\over dx}\arcsin x={1\over \sqrt{1-x^2}}\] \[{d\over dx}\arct ...
- [Swift]复数的表示和四则运算
我们把形如z=a+bi(a,b均为实数)的数称为复数,其中a称为实部,b称为虚部,i称为虚数单位. 当虚部等于零时,这个复数可以视为实数:当z的虚部不等于零时,实部等于零时,常称z为纯虚数. 复数域是 ...