深度學習框架(如:Pytorch、Tensorflow、Caffe...)
文章目錄
一、深度學習框架由來
二、各個深度學習框架
2.1、TensorFlow(Google)
2.2、Theano(蒙特利爾大學)
2.3、Torch(NYU/Facebook)
2.4、PyTorch(Facebook)
2.5、PaddlePaddle(百度)
2.6、MXNet
2.7、Caffe
2.7.1、特點
2.7.2、結構
一、深度學習框架由來
在深度學習初始階段,每個深度學習研究者都需要寫大量的重復代碼。為了提高工作效率,這些研究者就將這些代碼寫成了一個框架放到網上讓所有研究者一起使用。接著,網上就出現了不同的框架。隨著時間的推移,最為好用的幾個框架被大量的人使用從而流行了起來。
二、各個深度學習框架
全世界最為流行的深度學習框架有:PaddlePaddle、Tensorflow、Caffe、Theano、MXNet、Torch和PyTorch。
2.1、TensorFlow(Google)
自2015年底以來,TensorFlow的庫已正式在GitHub上開源,被廣泛應用于學術研究和工業應用。一些值得注意的用途包括DeepSpeech,RankBrain,SmartReply和On-DeviceComputerVision??梢栽赥ensorFlow的GitHub項目中查看一些最佳官方用途、研究模型、示例和教程。
2.2、Theano(蒙特利爾大學)
Theano是蒙特利爾大學蒙特利爾學習算法小組開發的一個開源項目。其一些最突出的特性包括GPU的透明使用,與NumPy緊密結合,高效的符號區分,速度/穩定性優化以及大量的單元測試。但是,2017年11月開始不再積極維護。原因在于Theano多年來推出的大部分創新技術現在已被其他框架所采用和完善。
2.3、Torch(NYU/Facebook)
Torch是Facebook的開源機器學習庫、科學計算框架和基于Lua編程語言的腳本語言。它提供了廣泛的深度學習算法,并已被Facebook、IBM、Yandex和其他公司用于解決數據流的硬件問題。
2.4、PyTorch(Facebook)
PyTorch在學術研究者中很受歡迎,也是相對比較新的深度學習框架。Facebook人工智能研究組開發了PyTorch以應對一些在前任數據庫Torch使用中遇到的問題。由于編程語言Lua的普及程度不高,Torch永遠無法經歷GoogleTensorFlow那樣的迅猛發展。因此,PyTorch采用已經為許多研究人員、開發人員和數據科學家所熟悉的原始Python命令式編程風格。同時它還支持動態計算圖,這一特性使得其對時間序列以及自然語言處理數據相關工作的研究人員和工程師很有吸引力。
2.5、PaddlePaddle(百度)
PaddlePaddle是百度研發的開源開放的深度學習平臺,是國內最早開源、也是當前唯一一個功能完備的深度學習平臺。依托百度業務場景的長期錘煉,PaddlePaddle有最全面的官方支持的工業級應用模型,涵蓋自然語言處理、計算機視覺、推薦引擎等多個領域,并開放多個領先的預訓練中文模型,以及多個在國際范圍內取得競賽冠軍的算法模型。
PaddlePaddle同時支持稠密參數和稀疏參數場景的超大規模深度學習并行訓練,支持千億規模參數、數百個幾點的高效并行訓練,也是最早提供如此強大的深度學習并行技術的深度學習框架。PaddlePaddle擁有強大的多端部署能力,支持服務器端、移動端等多種異構硬件設備的高速推理,預測性能有顯著優勢。目前PaddlePaddle已經實現了API的穩定和向后兼容,具有完善的中英雙語使用文檔,形成了易學易用、簡潔高效的技術特色。
2.6、MXNet
2.7、Caffe
Caffe,全稱Convolutional Architecture for Fast Feature Embedding,是一個兼具表達性、速度和思維模塊化的深度學習框架。最初開發于加利福尼亞大學伯克利分校。Caffe在BSD許可下開源,使用C++編寫,帶有Python接口。是賈揚清在加州大學伯克利分校攻讀博士期間創建了Caffe項目。項目托管于GitHub,擁有眾多貢獻者。Caffe應用于學術研究項目、初創原型甚至視覺、語音和多媒體領域的大規模工業應用。雅虎還將Caffe與Apache Spark集成在一起,創建了一個分布式深度學習框架CaffeOnSpark。2017年4月,Facebook發布Caffe2,加入了遞歸神經網絡等新功能。2018年3月底,Caffe2并入PyTorch。
2.7.1、特點
Caffe 完全開源,并且在有多個活躍社區溝通解答問題,同時提供了一個用于訓練、測試等完整工具包,可以幫助使用者快速上手。此外 Caffe 還具有以下特點:
模塊性:Caffe 以模塊化原則設計,實現了對新的數據格式,網絡層和損失函數輕松擴展。
表示和實現分離:Caffe 已經用谷歌的 Protocl Buffer定義模型文件。使用特殊的文本文件 prototxt 表示網絡結構,以有向非循環圖形式的網絡構建。
Python和MATLAB結合: Caffe 提供了 Python 和 MATLAB 接口,供使用者選擇熟悉的語言調用部署算法應用。
GPU 加速:利用了 MKL、Open BLAS、cu BLAS 等計算庫,利用GPU實現計算加速。
2.7.2、結構
簡單來講,Caffe 中的數據結構是以 Blobs-layers-Net 形式存在。其中,Blobs 是通過 4 維向量形式(num,channel,height,width)存儲網絡中所有權重,激活值以及正向反向的數據。作為 Caffe 的標準數據格式,Blob 提供了統一內存接口。Layers 表示的是神經網絡中具體層,例如卷積層等,是 Caffe 模型的本質內容和執行計算的基本單元。layer 層接收底層輸入的 Blobs,向高層輸出 Blobs。在每層會實現前向傳播,后向傳播。Net 是由多個層連接在一起,組成的有向無環圖。一個網絡將最初的 data 數據層加載數據開始到最后的 loss 層組合為整體。
注:我們常說的Caffe-SSD中,SSD(Single Shot MultiBox Detector,單發多盒檢測器)是一種目標檢測算法,類比YOLO;而Caffe(Convolutional Architecture for Fast Feature Embedding)是一種深度學習框架!
pytorch TensorFlow 深度學習
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。