常用深度学习框——Caffe/ TensorFlow / Keras/ PyTorch/MXNet
常用深度学习框——Caffe/ TensorFlow / Keras/ PyTorch/MXNet
一.概述
近几年来,深度学习的研究和应用的热潮持续高涨,各种开源深度学习框架层出不穷,包括TensorFlow,Keras,MXNet,PyTorch,CNTK,Theano,Caffe,DeepLearning4,Lasagne,Neon,等等。Google,Microsoft等商业巨头都加入了这场深度学习框架大战,当下最主流的框架当属TensorFlow,Keras,MXNet,PyTorch,Caffe接下来对这四种主流的深度学习框架从几个不同的方面进行简单的对比。
选择框架,建议几个点考虑:
1)框架能不能解决你的问题。比如某些框架对rnn或者lstm支持不足。
这个是必要条件。下面的都附加条件。
2)框架的资源是否足够。比如文档,社区,开源的项目支持。
3)框架是否易于上手,学习曲线如何。这个就因人而异了。
4)框架应用是否和现有系统匹配。这个也是根据你自己的具体情况了。
二. Caffe
Caffe作为入门级的深度学习框架,对于一般的深度学习任务,如图像分类/ 目标检测/ 实例分割等,存在已有的代码供大家参考,使得上手很快,需要新手修改的地方一般为配置文件,基本不需要书写代码。而且Caffe是基于C++的代码,因此训练方面很快。因此,作为新手入门这是一个很好的框架。适合新手作为入门,了解深度学习,以及深度学习任务中的各参数。
1) 优点
i). 上手快,无需编写大量代码,即可迁移到自己的数据集
ii). 能快速了解入门深度学习
iii). 基于C++的开发,训练速度快
但是Caffe的不足也很严重,主要有一下几个方面:
2) 不足
i) 首先,虽然能较快入门,但对深度学习的细节认识不深,如果要深入理解,需要阅读源码,相比其他框架,比较困难
ii) 如果要修改代码,需要对CPU版和GPU版同时修改,而且修改代码的时间相对较长,不利于快速实现新的想法
iii) 最后,最让人头疼的是GPU版本的安装问题
对于Caffe的安装,很是让人头疼,如果感兴趣,可以参考的博客: Caffe 安装 ubuntu14 + CUDA8.0 + CUDNN5.0(基于anaconda的环境)。
三. Keras
Keras是基于Theano或者TensorFlow的高级深度学习框架,使用Keras有助于快速构建神经网络。不需要去理会TensorFlow底层基于权值和偏值的构建。Keras是一个用Python编写的开源神经网络库,它能够在TensorFlow,CNTK,Theano或MXNet上运行。旨在实现深度神经网络的快速实验,它专注于用户友好,模块化和可扩展性。其主要作者和维护者是Google工程师FrançoisChollet。
1) 优点
i) 快速构建网络,实现自己的想法
ii) 不用拘泥于底层的一些细节
2) 不足
i) 对于新的领域,可能更新较慢,此时自己写一些层或者其他东西,比较困难,如权值的共享,比较困难
ii) 训练速度相对较慢
四. TensorFlow
TensorFlow是Google Brain基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理,于2015年11月9日在Apache 2.0开源许可证下发布,并于2017年12月份预发布动态图机制Eager Execution。 TensorFlow有高级的API,也有从零开始新建的权值和偏值,适合深入理解学习。
1) 优点
i) 既有高级的API,可以快速建立网络,如将Keras整合到TensorFlow中,tf.keras,也有TFLearn/
Slim等高级API供使用
ii) 又能基于底层开始构建神经网络,适合深入学习,和添加一些新的网络层或者建立新的Loss函数
iii) Google的大力支持,所以有很多学习资源
2) 不足
i) 网络基于静态图,所有资源的计算都在图中计算,调试较麻烦,不容易找bug
ii) 个人感觉TensorFlow中对于同一个功能的函数存在多个,可能会导致新手学习时,不知所措
iii) 国内IP不能访问英文版TensorFlow官网,将导致不能查看API,这个很难受
五. PyTorch
PyTorch是Facebook于2017年1月18日发布的python端的开源的深度学习库,基于Torch。支持动态计算图,提供很好的灵活性。在2018年五月份的开发者大会上,Facebook宣布实现PyTorch与Caffe2无缝结合的PyTorch1.0版本。
PyTorch,封装得很好,构建自己的网络较快,适合新手。
1) 优点
i) 能较快构建网络,新手入手较快
ii) 将代码迁移至GPU较快,功能封装高
2) 不足
封装过于高级,导致函数调用不清楚,不利于深入理解
MXNet:
MXNet是DMLC(Distributed Machine Learning Community)开发的一款开源的、轻量级、可移植的、灵活的深度学习库,它让用户可以混合使用符号编程模式和指令式编程模式来最大化效率和灵活性,目前已经是AWS官方推荐的深度学习框架。MXNet的很多作者都是中国人,其最大的贡献组织为百度。
优点:
灵活性以及使用的语言比较喜欢python,它可以使用命令式编程,它自己有很好的一些模型训练工具以及优化工具。
缺点
文档不够详细。
六.性能对标
各个框架的相关属性
基于DAQUAR数据集的视觉问答问题 。模型:卷积神经网络+LSTM,具体如下图所示:
将数据缩放至50*50,进行训练5epoches。对上述实验三中224*224数据进行实验,对比四种框架对于硬件(GPU)的利用率。结果如下表所示:
框架(TF和Keras设置为按需占用显存) |
GPU占用(MB) |
每次迭代时间(s) |
tensorflow |
8345 |
644.5518 |
Keras(tf) |
10930 |
827.2875 |
MXNet |
6526 |
470.7210 |
PyTorch |
6570 |
630.9932 |
框架 |
CPU(s) |
GPU(s) |
tensorflow |
Nan |
90.1354 |
Keras(tf) |
Nan |
108.6438 |
MXNet |
Nan |
85.3432 |
PyTorch |
Nan |
87.5231 |
七. 总结
新手可以使用Caffe快速进行训练,新手使用Keras或者PyTorch进行快速构建自己的网络,想深入了解或者修改代码的可以学习TensorFlow。当然如果对C++情有独钟,学习Caffe是个不错的选择。
常用深度学习框——Caffe/ TensorFlow / Keras/ PyTorch/MXNet的更多相关文章
- Ubuntu16.04深度学习基本环境搭建,tensorflow , keras , pytorch , cuda
Ubuntu16.04深度学习基本环境搭建,tensorflow , keras , pytorch , cuda Ubuntu16.04安装 参考https://blog.csdn.net/flyy ...
- 深度学习(六)keras常用函数学习
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9769301.html Keras是什么? Keras:基于Theano和TensorFlow的 ...
- 问题集录--新手入门深度学习,选择TensorFlow 好吗?
新手入门深度学习,选择 TensorFlow 有哪些益处? 佟达:首先,对于新手来说,TensorFlow的环境配置包装得真心非常好.相较之下,安装Caffe要痛苦的多,如果还要再CUDA环境下配合O ...
- 深度学习利器:TensorFlow在智能终端中的应用——智能边缘计算,云端生成模型给移动端下载,然后用该模型进行预测
前言 深度学习在图像处理.语音识别.自然语言处理领域的应用取得了巨大成功,但是它通常在功能强大的服务器端进行运算.如果智能手机通过网络远程连接服务器,也可以利用深度学习技术,但这样可能会很慢,而且只有 ...
- 深度学习利器: TensorFlow系统架构及高性能程序设计
2015年11月9日谷歌开源了人工智能平台TensorFlow,同时成为2015年最受关注的开源项目之一.经历了从v0.1到v0.12的12个版本迭代后,谷歌于2017年2月15日发布了TensorF ...
- (转) 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-01-FAQ
特别棒的一篇文章,仍不住转一下,留着以后需要时阅读 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-01-FAQ
- 深度学习框架Caffe的编译安装
深度学习框架caffe特点,富有表达性.快速.模块化.下面介绍caffe如何在Ubuntu上编译安装. 1. 前提条件 安装依赖的软件包: CUDA 用来使用GPU模式计算. 建议使用 7.0 以上最 ...
- 深度学习框架-caffe安装-环境[Mac OSX 10.12]
深度学习框架-caffe安装 [Mac OSX 10.12] [参考资源] 1.英文原文:(使用GPU) [http://hoondy.com/2015/04/03/how-to-install-ca ...
- 深度学习框架-caffe安装-Mac OSX 10.12
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC"; color: #454545 } p.p2 ...
随机推荐
- Windows中的权限设置、文件压缩、文件加密、磁盘配额和卷影副本
目录 权限设置 文件夹的NTFS权限 文件的NTFS权限 NTFS权限的应用规则 文件压缩 文件加密 磁盘配额 卷影副本 权限设置的应用 遇到的一个权限问题的小bug 权限问题的实际应用 权限设置 ...
- Python 巡检接入钉钉机器人
前段时间,为了快速实现巡检服务器设备的健康状态,我简单的写了一个巡检工具,该工具已经可以满足我的大部分需求了,不过,每次都要自己手动去点击巡检才能知道今天设备的状态,由于每天巡检严重影响我学习逆向技术 ...
- 使用EasySYS搭建驱动开发基本框架
提供EasySYS的下载地址:http://bbs.pediy.com/showthread.php?p=956643,看雪上有提供下载,自行百度. EasySYS你能够帮我们快速的搭建驱动的开发框架 ...
- POJ 2396 构造矩阵(上下流)
题意: 要求构造一个矩阵,给你行和,列和,还有一些点的上下范围,输出一个满足题意的矩阵. 思路: 这个题目很经典,这是自己看上下流后接触的第一道题,感觉很基础的一道题目,现在我 ...
- POJ1548最小路径覆盖
题意: 给你一个DAG,然后问你最少多少条路径能覆盖所有需要覆盖的点. 思路: 最小路径覆盖,太明显了,每个点向它右下方的点连边,然后...没啥难的地方,不说了. #inclu ...
- 5.PHP与Web页面交互
PHP与Web页面交互 PHP中提供了两种与Web页面交互的方法,一种是通过Web表单提交数据,另一种是通过URL参数传递. 表单提交用户名字和密码: <form name "form ...
- nodejs-Stream(流)
Node.js Stream(流) 描述++++++++++++++++++++++++++++++++++++++++++++++++++++ Stream 是一个抽象接口,Node 中有很多对象实 ...
- <input type="file" id="fileID">文本框里的值清空方法
一般情况下,不允许通过脚本来对文件上传框赋值. 下面是一个变通的方法.就是创建一个新的input type="file" 把原来的替换掉. <!DOCTYPE html PU ...
- 【Android开发高手笔记】Dagger2和它在SystemUI上的应用
和人类需要群居一样,程序界的进程.线程也需要通信往来.它们的交流则依赖模块之间.文件之间产生的关系.如何快速地搞清和构建这种关系,同时还能减轻彼此的依赖,需要开发者们认真思考. 我们将这种需求称之为依 ...
- .NET 在信创常用软件适配清单之中?
2020年8月份写了一篇文章<.NET Core也是国产化信息系统开发的重要选项>, 这又过去了大半年了,在信创领域发生了很大的变化,今天写这篇文章主要是想从信创常用软件适配清单 看一看. ...