主流のコントラスト(TensorFlow、Keras、MXNet、PyTorch)深い学習フレームワーク

近年では、研究と深い学習のアプリケーションでのブームは深いTensorFlow、Keras、MXNet、PyTorch、CNTK、Theano、カフェ、DeepLearning4、ラザニア、ネオンなどのオープンソースのフレームワーク無限の多様性を学ぶ、というように、上昇し続けています。グーグル、マイクロソフトおよびその他の商業巨人は、これらの4つの主要な深学習フレームワークのいくつかの異なる側面から続く、私を深く、現在の枠組みTensorFlow、Keras、MXNet、PyTorchの間違いなく最も主流のフレームワークを学ぶ戦争に参加しています単純な比較。

I.はじめに

TensorFlow:

TensorFlowは、人工知能ベースの学習システムGoogleの脳DistBeliefの研究開発の第二世代であり、その名前は、12月に自身が2015年11月9日にはApache 2.0オープンソースライセンスの下でリリースされた動作原理から2017プレリリースを得ダイナミックマップメカニズム熱心実行。
Keras:
KerasはPythonのオープンソースのニューラルネットワークライブラリで書かれていることができTensorFlow、CNTK、TheanoまたはMXNet上で実行されています。迅速なニューラルネットワークを実現するために設計された深さの実験、それはユーザーフレンドリーな、モジュラーかつスケーラブルに焦点を当てています。主な著者およびメンテナは、GoogleのエンジニアFrançoisCholletです。
MXNet:
MXNetは、ユーザーが効率を最大化するために、シンボリックプログラミングモードと命令型プログラミングモデルを混在させることができますDMLC(分散機械学習コミュニティ)は、オープンソースの開発、軽量、ポータブル、およびライブラリを学ぶ柔軟な深さであり、そして、柔軟性、AWSは現在、正式に深学習フレームワークをお勧めします。MXNet多くの著者は、中国の人々 、百度に組織への最大の貢献です。
PyTorch:
PyTorchはトーチをベースとしたオープンソースのPythonライブラリの深さの調査、年末までに発行した2017年1月18日にFacebookのです。ダイナミック算出マップのサポートは、優れた柔軟性を提供します。上の今年の開発者会議(2018)の月に、FacebookはPyTorchがCaffe2 PyTorch1.0版は近日公開されますとのシームレスな統合を実現すると発表しました。
:表1-1に示すように、4つのフレームの比較のいくつかの基本的な性質のために

関連する各フレームの表1-1プロパティ

第二に、人気

四の深い学習ライブラリは、オープンソースは、我々はGitHubの上でのデータを通じて、業界でその人気の度合いを見ることができます、そして6月17日に終了し、2018 Githubのデータは、表2-1、表2-2に示しますショー。

表2-1
这里写图片描述
表2-2

第三に、柔軟性

静的な計算チャートの形で主要なサポートは、グラフ構造は直感的ですが、非常にデバッグするプロセスが複雑で面倒さTensorFlow、多少の誤差はより困難になります。しかし、2017年の終わりまでに動的算出マップのサポートを追加、動的グラフ機構熱心実行をリリースしたが、現在はまだ基づいて元の静的計算グラフィカルを使用。TensorFlowプロセス、ビジュアル・コンピューティングの動作を監視することができるTensorBoardアプリケーションを有しています。
Kerasが異なる高レベルAPIフレームワークの数に基づいて、あなたはすぐに設計し、モデル化することができ、順次、機能の2つの設計モデルをサポートしながら、それはすぐに結果の考え方に変更することができますが、ため、パッケージの高さの、既存モデルの変更のために非常に柔軟ではないかもしれません。
静的および動的な算出マップ算出マップの両方をサポートし、かつ良好なパッケージのトレーニング機能を有するMXNetコマンドサポート2つのプログラミングと宣言方法、一組の柔軟性と効率は、Keras後MXNetと同様、同時に導入されています高レベルのインターフェイスグルーオンを終了します。
PyTorch図動的に優れた支持GPUと共に、モデルを構築するために非常に便利な、典型的な代表的な、簡単なデバッグおよび高度にモジュールとして計算し、CPUとGPUの間でパラメータデータ移行が柔軟です

第四に、学習のしやすさ

对于深度学习框架的学习难易程度以及使用的简易度还是比较重要的,我认为应该主要基于框架本身的语言设计、文档的详细程度以及科技社区的规模考虑。对于框架本身的语言设计来讲,TensorFlow是比较不友好的,与Python等语言差距很大,有点像基于一种语言重新定义了一种编程语言,并且在调试的时候比较复杂。每次版本的更新,TensorFlow的各种接口经常会有很大幅度的改变,这也大大增加了对其的学习时间;Keras是一种高级API,基于多种深度学习框架,追求简洁,快速搭建模型,具有完美的训练预测模块,简单上手,并能快速地将所想变现,十分适合入门或者快速实现。但是学习会很快遇到瓶颈,过度的封装导致对于深度学习知识的学习不足以及对于已有神经网络层的改写十分复杂;MXNet同时支持命令式编程和声明式编程,进行了无缝结合,十分灵活,具备完整的训练模块,简单便捷,同时支持多种语言,可以减去学习一门新主语言的时间。上层接口Gluon也极其容易上手;PyTorch支持动态计算图,追求尽量少的封装,代码简洁易读,应用十分灵活,接口沿用Torch,具有很强的易用性,同时可以很好的利用主语言Python的各种优势。对于文档的详细程度,TensorFlow具备十分详尽的官方文档,查找起来十分方便,同时保持很快的更新速度,但是条理不是很清晰,教程众多;Keras由于是对于不同框架的高度封装,官方文档十分详尽,通俗易懂;MXNet发行以来,高速发展,官方文档较为简单,不是十分详细,存在让人十分迷惑的部分,框架也存在一定的不稳定性;PyTorch基于Torch并由Facebook强力支持,具备十分详细条理清晰的官方文档和官方教程。对于社区,庞大的社区可以推动技术的发展并且便利问题的解决,由Google开发并维护的TensorFlow具有最大社区,应用人员团体庞大;Keras由于将问题实现起来简单,吸引了大量研究人员的使用,具有很大的用户社区;MXNet由Amazon,Baidu等巨头支持,以其完美的内存、显存优化吸引了大批用户,DMLC继续进行开发和维护;PyTorch由Facebook支持,并且即将与Caffe2无缝连接,以其灵活、简洁、易用的特点在发布紧一年多的时间内吸引了大量开发者和研究人员,火爆程度依旧在不断攀升,社区也在不断壮大。

五、 性能

为了比较四个框架的性能(主要是运行速度),我进行了三个不同的实验,对于不同的神经网络以及不同类型的数据集在分别在CPU、GPU环境下进行了测试。
CPU环境:Ubuntu14.04 内存 32GB AMD Opteron(tm) Processor 4284
GPU环境1:Ubuntu16.04 内存 32GB Quadro P2000(5GB显存)
Intel(R) Xeon(R) CPU E5-2637 v4 @ 3.50GHz
GPU环境2:Ubuntu16.04 内存 16GB Tesla K40(12GB显存)
Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz
代码地址:https://github.com/CircleXing001/DL-tools
以下实验时间均为总训练时间,GPU环境下包括数据由内存复制到GPU的时间,不包括数据读入内存所需的时间。

实验一:基于北京pm2.5数据集的多变量时序数据预测问题

数据集:https://archive.ics.uci.edu/ml/datasets/Beijing+PM2.5+Data
模型:简单的单层LSTM+全连接层,如下图所示:
这里写图片描述
进行训练50epoches,实验结果如表5-1所示:

表5-1
实验二:基于Mnist数据集的分类问题
模型:两层卷积神经网络+全连接层,如下图所示:
这里写图片描述
进行训练10epoches,实验结果如表5-2所示:

表5-2
实验三:基于DAQUAR数据集的视觉问答问题
数据集:https://www.mpi-inf.mpg.de/departments/computer-vision-and-multimodal-computing/research/vision-and-language/visual-turing-challenge/
模型:卷积神经网络+LSTM,具体如下图所示:
这里写图片描述
将数据缩放至50*50,进行训练5epoches,实验结果如表5-3所示:

表5-3
在GPU环境2(Ubuntu16.04+内存 16GB +Tesla K40(12GB显存)+
Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz)
对上述实验三中224*224数据进行实验,对比四种框架对于硬件(GPU)的利用率,结果见表5-4。

表5-4
通过上述实验我们可以发现,不同的深度学习框架对于计算速度和资源利用率的优化存在一定的差异:Keras为基于其他深度学习框架的高级API,进行高度封装,计算速度最慢且对于资源的利用率最差;在模型复杂,数据集大,参数数量大的情况下,MXNet和PyTorch对于GPU上的计算速度和资源利用的优化十分出色,并且在速度方面MXNet优化处理更加优秀;相比之下,TensorFlow略有逊色,但是对于CPU上的计算加速,TensorFlow表现更加良好。

本文转载自:https://blog.csdn.net/Circlecircle3/article/details/82086396

发布了162 篇原创文章 · 获赞 7 · 访问量 1万+

おすすめ

転載: blog.csdn.net/Rhao999/article/details/104216103