深度学习框架汇总
目錄
- 1、前言
- 2、性能分析
- 3、問題探討
隨著“大數據時代”的到來和計算能力的提升,深度學習成為了一種很火的新科技。已經成功的應用到了很多個領域中。包括“計算機視覺”“語音識別”“自然語言處理”等。為了進行高效的開發一個深度學習系統,許多大型科技公司都推出了自己的深度學習框架。而且,最近這段時間接二連三的有新的“深度學習”框架推出。自己感覺有必要做一個總結,來收集一下這些深度學習框架。
但是,在此同時,我有一個問題,真的需要這么多的深度學習框架嗎?在科技領域為什么看不到合作呢?眾多的深度學習框架,企業和個人如何選擇一個適合自己的框架呢?
以下,我將圍繞著幾個問題展開整篇博客的內容。
1、前言
首先,讓我們看一下,當前都有哪些深度學習框架?我會列出相應的鏈接,方便大家的訪問。(我會不斷地更新這個列表)
1.Tensorflow – https://www.tensorflow.org/
github – https://github.com/tensorflow/tensorflow
2.Caffe – http://caffe.berkeleyvision.org/
github – https://github.com/BVLC/caffe
3.Theano – http://deeplearning.net/software/theano/install.html
github – https://github.com/Theano/Theano
4.keras – https://keras.io/
github – https://github.com/fchollet/keras
5.Torch – http://torch.ch/
github – https://github.com/torch/torch7
6.Lasagne – http://lasagne.readthedocs.io/en/latest/
github – https://github.com/Lasagne/Lasagne
7.MXNet – http://mxnet.io/
github – https://github.com/dmlc/mxnet
8.DIGITS – https://developer.nvidia.com/digits
github – https://github.com/NVIDIA/DIGITS
9.CNTK – https://cntk.codeplex.com/
github – https://github.com/Microsoft/CNTK
10.PaddlePaddle – http://www.paddlepaddle.org/
github – https://github.com/PaddlePaddle/Paddle
11.Deeplearning4j – https://github.com/deeplearning4j/
deeplearning4j
12.tensorlayer – http://tensorlayer.readthedocs.io/en/latest/
github – https://github.com/zsdonghao/tensorlayer
13.TFLearn – http://tflearn.org/tutorials/
githu – https://github.com/tflearn/tflearn
14.caffe2 – https://caffe2.ai/
github – https://github.com/caffe2/caffe2
15.pytorch – http://pytorch.org/
github – https://github.com/pytorch/pytorch
16.Leaf – http://autumnai.com/leaf/book/
github – https://github.com/autumnai/leaf
17.Chainer – http://chainer.org/
github – https://github.com/pfnet/chainer
18.DSSTNE
github – https://github.com/amznlabs/amazon-dsstne
19.Neon
github – https://github.com/NervanaSystems/neon
2、性能分析
接下來,讓我們簡單的比較一下它們的性能,能存在總會有理由的,它們都有自己的特點。
以下的表格是一個有關于各個深度學習框架的一個對比:
注:
1.從這個表格我們可以看出,當前比較受歡迎的深度學習框架包括:tensorflow、caffe、keras、CNTK、MXNet、Torch、Theano。工業界中常用的包括:tensorflow、caffe、CNTK、MXNet、Torch。學術界常用的包括:keras、theano。
2.這個表格中的部分數據來自于互聯網,可能存在著一定的誤差嗎,但是總的來說具有一定的參考價值。
3、問題探討
通過上面的表格,我們會發現有很多的深度學習框架。那么,我們該如何選擇一個適合自己的深度學習框架呢?你需要根據你自己的實際需要選擇合適的框架。需要考慮的主要因素包括:開發語言、硬件平臺、操作系統等
> a. 開發語言 > 通過上面的表格我們可以總結出深度學習支持的開發語言包括: >Python/C++/R/Julia/Scala/Go/Javascript/Perl/Matlab >/Lua/Cuda/JAVA/Rust等。但是最常用的兩種開發語言是:Python和C++。主要的原因如下所示: > > 1) python非常簡單,很容易上手,但是運行的效率比較低,因此常用來快速的搭建深度學習中的網絡模型。 > 2)C++的語法眾多,需要自己分配并處理內容,開發代碼冗長,但是運行效率很高,因此常用來作為深度學習中的終端引擎來使用。 > 如果你自己不熟悉Python或者C++,你可以使用的框架就非常的有限; > 如果你熟悉Python或者C++,你幾乎可以使用任何一種深度學習框架; > 如果你是一名JAVA愛好者,你更可能會選擇利用Deeplearning來進行開發。 > > 因此,開發語言是一個限制你使用深度學習框架的一個關鍵因素。你需要根據你自己的實際情況選擇。 > > b. 硬件平臺 > 通過上面這個表格,我們可以總結出當前的深度學習框架支持的硬件平臺包括:CPU、GPU、Andriod、IOS、FPGA、ARM等多種平臺。 > 如果你的電腦不支持GPU,你就只能選擇其他的平臺; > 如果你自己擅長GPU,你可以使用的框架就很多; > 如果你的項目制定的硬件是FPGA,你能使用的框架就會受到限制。 > > 因此,這也是一個限制你使用框架的關鍵因素。你需要根據自己的需要以及項目的需要去進行選擇。 > > c. 操作系統 > 當前,這些框架支持的系統主要包括:Linux、Mac、Windows。幾乎包括了所有的操作系統。但是對應不同的框架所支持的操作系統有很多不同。 > 如果你熟悉Linux系統,那么你幾乎可以使用任何一個框架。 > 如果你想在Windows下使用這些框架,那么你就會受到很大的限制。同時會出現很多莫名其妙的問題。 > > 因此,你需要選擇一個合適的操作系統,這可能會影響你的開發進程和使用的框架的數目。 > > d. 分布式系統 > 分布式系統可以將一個很大的任務分割開來,在不同的主機上進行運行,這可以大大的提高訓練的速率,加快整個開發的過程。這對于大模型的訓練具有至關重要的作用。當前對分布式系統有很好的支持的框架包括:tensorflow、CNTK、MXNet、Torch、Caffe。都有強大的后臺。 > 如果你訓練的數據量很少,你可以選擇使用單片CPU或者單片GPU; > 如果你訓練的數據量較大,你可以選擇使用多塊CPU或者多塊GPU; > 如果你訓練的數據量很大,你就需要使用到云服務器或者一個分布式系統集群。 > > 因此,這也是一個影響你選擇框架的一個因素。 > 總之,你需要綜合考慮多個因素選擇一個合適的深度學習框架。總結
- 上一篇: 深度学习在CV领域的进展以及一些由深度学
- 下一篇: TCL 中环上调单晶硅片价格