日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

【完结】12大深度学习开源框架(caffe,tf,pytorch,mxnet等)快速入门项目

發(fā)布時間:2025/3/20 pytorch 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【完结】12大深度学习开源框架(caffe,tf,pytorch,mxnet等)快速入门项目 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這是一篇總結文,給大家來捋清楚12大深度學習開源框架的快速入門,這是有三AI的GitHub項目,歡迎大家star/fork。

https://github.com/longpeng2008/yousan.ai

?

1 概述

1.1 開源框架總覽

現(xiàn)如今開源生態(tài)非常完善,深度學習相關的開源框架眾多,光是為人熟知的就有caffe,tensorflow,pytorch/caffe2,keras,mxnet,paddldpaddle,theano,cntk,deeplearning4j,matconvnet等。

如何選擇最適合你的開源框架是一個問題。有三AI在前段時間里,給大家整理了12個深度學習開源框架快速入門的教程和代碼,供初學者進行挑選,一個合格的深度學習算法工程師怎么著得熟悉其中的3個以上吧。

下面是各大開源框架的一個總覽。

在這里我們還有一些框架沒有放上來,是因為它們已經(jīng)升級為大家更喜歡或者使用起來更加簡單的版本,比如從torch->pytorch,從theano到lasagne。另外這些框架都支持CUDA,因此編程語言這里也沒有寫上cuda。

在選擇開源框架時,要考慮很多原因,比如開源生態(tài)的完善性,比如自己項目的需求,比如自己熟悉的語言。當然,現(xiàn)在已經(jīng)有很多開源框架之間進行互轉(zhuǎn)的開源工具如MMDNN等,也降低了大家遷移框架的學習成本。

除此之外還有tiny-dnn,ConvNetJS,MarVin,Neon等等小眾,以及CoreML等移動端框架,就不再一一介紹。

總的來說對于選擇什么樣的框架,有三可以給出一些建議。

(1) 不管怎么說,tensorflow/pytorch你都必須會,這是目前開發(fā)者最喜歡,開源項目最豐富的兩個框架。

(2) 如果你要進行移動端算法的開發(fā),那么Caffe是不能不會的。

(3) 如果你非常熟悉Matlab,matconvnet你不應該錯過。

(4) 如果你追求高效輕量,那么darknet和mxnet你不能不熟悉。

(5) 如果你很懶,想寫最少的代碼完成任務,那么用keras吧。

(6) 如果你是java程序員,那么掌握deeplearning4j沒錯的。

其他的框架,也自有它的特點,大家可以自己多去用用。

1.2 如何學習開源框架

要掌握好一個開源框架,通常需要做到以下幾點:

(1) 熟練掌握不同任務數(shù)據(jù)的準備和使用。

(2) 熟練掌握模型的定義。

(3) 熟練掌握訓練過程和結果的可視化。

(4) 熟練掌握訓練方法和測試方法。

一個框架,官方都會開放有若干的案例,最常見的案例就是以MNISI數(shù)據(jù)接口+預訓練模型的形式,供大家快速獲得結果,但是這明顯還不夠,學習不應該停留在跑通官方的demo上,而是要解決實際的問題。

我們要學會從自定義數(shù)據(jù)讀取接口,自定義網(wǎng)絡的搭建,模型的訓練,模型的可視化,模型的測試與部署等全方位進行掌握。

因此,我們開設了一個《2小時快速入門開源框架系列》,以一個圖像分類任務為基準,帶領大家一步一步入門,后續(xù)會增加分割,檢測等任務。

這是一個二分類任務,給大家準備了500張微笑表情的圖片、500張無表情的圖片,放置在git工程的data目錄下,圖片預覽如下,已經(jīng)全部縮放到60*60的大小:

這是無表情的圖片:

這是微笑表情的圖片。

因此,我們的目標就是利用這500張圖片完成好這個圖像分類任務。

在下面的所有框架的學習過程中,我們都要完成下面這個流程,只有這樣,才能叫做真正的完成了一個訓練任務。

另外,所有的框架都使用同樣的一個模型,這是一個3層卷積+2層全連接的網(wǎng)絡,由卷積+BN層+激活層組成,有的使用帶步長的卷積,有的使用池化,差別不大。

輸入圖像,48*48*3的RGB彩色圖。

第一層卷積,通道數(shù)12,卷積核3*3。

第二層卷積,通道數(shù)24,卷積核3*3。

第三層卷積,通道數(shù)48,卷積核3*3。

第一層全連接,通道數(shù)128。

第二層全連接,通道數(shù)2,即類別數(shù)。

網(wǎng)絡結構如下:

這是最簡單的一種網(wǎng)絡結構,優(yōu)化的時候根據(jù)不同的框架,采用了略有不同的方案。因為此處的目標不是為了比較各個框架的性能,所以沒有刻意保持完全一致。

?

2 開源框架

下面我們開始對各個框架進行簡述。

2.1 Caffe

github地址:https://github.com/BVLC/caffe。

(1) 概述:

Caffe是伯克利的賈揚清主導開發(fā),以C++/CUDA代碼為主,最早的深度學習框架之一,比TensorFlow、Mxnet、Pytorch等都更早,需要進行編譯安裝。支持命令行、Python和Matlab接口,單機多卡、多機多卡等都可以很方便的使用。目前master分支已經(jīng)停止更新,intel分支等還在維護,caffe框架已經(jīng)非常穩(wěn)定。

(2)caffe的使用通常是下面的流程:

以上的流程相互之間是解耦合的,所以caffe的使用非常優(yōu)雅簡單。

(3) caffe有很明顯的優(yōu)點和缺點。

優(yōu)點:

以C++/CUDA/python代碼為主,速度快,性能高。

工廠設計模式,代碼結構清晰,可讀性和拓展性強。

支持命令行、Python和Matlab接口,使用方便。

CPU和GPU之間切換方便,多GPU訓練方便。

工具豐富,社區(qū)活躍。

缺點:

源代碼修改門檻較高,需要實現(xiàn)前向反向傳播,以及CUDA代碼。

不支持自動求導。

不支持模型級并行,只支持數(shù)據(jù)級并行

不適合于非圖像任務。

鑒于caffe的學習有一定門檻,我給新手們提供一個自己錄制的視頻。

有三說深度學習 - 網(wǎng)易云課堂?study.163.com

其他框架后續(xù)也會錄制,完整的系列視頻在網(wǎng)易云上,見《有三說深度學習》。

同時可以看下面的快速入門文檔,以及閱讀相關的源代碼。

【caffe速成】caffe圖像分類從模型自定義到測試?

2.2 Tensorflow

github地址:https://github.com/tensorflow/tensorflow。

(1) 概述

TensorFlow是Google brain推出的開源機器學習庫,可用作各類深度學習相關的任務。

TensorFlow = Tensor + Flow,Tensor就是張量,代表N維數(shù)組,這與Caffe中的blob是類似的;Flow即流,代表基于數(shù)據(jù)流圖的計算。

(2) 特點

TensorFlow最大的特點是計算圖,即先定義好圖,然后進行運算,所以所有的TensorFlow代碼,都包含兩部分:

創(chuàng)建計算圖,表示計算的數(shù)據(jù)流。它做了什么呢?實際上就是定義好了一些操作,你可以將它看做是Caffe中的prototxt的定義過程。

運行會話,執(zhí)行圖中的運算,可以看作是Caffe中的訓練過程。只是TensorFlow的會話比Caffe靈活很多,由于是Python 接口,取中間結果分析,Debug等方便很多。

目前tensorflow已經(jīng)更新到2.0,由于精力原因,筆者的代碼仍然以1.x版本為例。

【tensorflow速成】Tensorflow圖像分類從模型自定義到測試?

2.3 Pytorch

github地址:https://github.com/pytorch/pytorch。

(1) 概述:一句話總結Pytorch = Python + Torch。

Torch是紐約大學的一個機器學習開源框架,幾年前在學術界非常流行,包括Lecun等大佬都在使用。但是由于使用的是一種絕大部分人絕對沒有聽過的Lua語言,導致很多人都被嚇退。后來隨著Python的生態(tài)越來越完善,Facebook人工智能研究院推出了Pytorch并開源。Pytorch不是簡單的封裝Torch 并提供Python接口,而是對Tensor以上的所有代碼進行了重構,同TensorFlow一樣,增加了自動求導。

后來Caffe2全部并入Pytorch,如今已經(jīng)成為了非常流行的框架。很多最新的研究如風格化、GAN等大多數(shù)采用Pytorch源碼。

(2) 特點

動態(tài)圖計算。TensorFlow從靜態(tài)圖發(fā)展到了動態(tài)圖機制Eager Execution,pytorch則一開始就是動態(tài)圖機制。動態(tài)圖機制的好處就是隨時隨地修改,隨處debug,沒有類似編譯的過程。

簡單。相比TensorFlow1.0中Tensor、Variable、Session等概念充斥,數(shù)據(jù)讀取接口頻繁更新,tf.nn、tf.layers、tf.contrib各自重復,Pytorch則是從Tensor到Variable再到nn.Module,最新的Pytorch已經(jīng)將Tensor和Variable合并,這分別就是從數(shù)據(jù)張量到網(wǎng)絡的抽象層次的遞進。有人調(diào)侃TensorFlow的設計是“make it complicated”,那么 Pytorch的設計就是“keep it simple”。

【pytorch速成】Pytorch圖像分類從模型自定義到測試?

2.4 Mxnet

github地址:https://github.com/apache/incubator-mxnet。

(1) 概述

Mxnet是由李沐等人領導開發(fā)的非常靈活,擴展性很強的框架,被Amazon定為官方框架。

(2) 特點

Mxnet同時擁有命令式編程和符號式編程的特點。在命令式編程上MXNet提供張量運算,進行模型的迭代訓練和更新中的控制邏輯;在聲明式編程中MXNet支持符號表達式,用來描述神經(jīng)網(wǎng)絡,并利用系統(tǒng)提供的自動求導來訓練模型。Mxnet性能非常高,推薦資源不夠的同學使用。

【mxnet速成】mxnet圖像分類從模型自定義到測試?

2.5 Keras

github網(wǎng)址:https://github.com/keras-team/keras。

(1) 概述

Keras是一個對小白用戶非常友好而簡單的深度學習框架,嚴格來說并不是一個開源框架,而是一個高度模塊化的神經(jīng)網(wǎng)絡庫。

Keras在高層可以調(diào)用TensorFlow,CNTK,Theano,還有更多的庫也在被陸續(xù)支持中。 Keras的特點是能夠快速實現(xiàn)模型的搭建,是高效地進行科學研究的關鍵。

(2) 特點

高度模塊化,搭建網(wǎng)絡非常簡潔。

API很簡單,具有統(tǒng)一的風格。

容易擴展,只需使用python添加新類和函數(shù)。

【Keras速成】Keras圖像分類從模型自定義到測試?

2.6 Paddlepaddle

github網(wǎng)址:https://github.com/PaddlePaddle/Paddle。

(1) 概述

正所謂Google有Tensorflow,Facebook有Pytorch,Amazon有Mxnet,作為國內(nèi)機器學習的先驅(qū),百度也有PaddlePaddle,其中Paddle即Parallel Distributed Deep Learning(并行分布式深度學習)。

(2) 特點

paddlepaddle的性能也很不錯,整體使用起來與tensorflow非常類似,擁有中文幫助文檔,在百度內(nèi)部也被用于推薦等任務。另外,配套了一個可視化框架visualdl,與tensorboard也有異曲同工之妙。國產(chǎn)框架不多,大家多支持啊!

【paddlepaddle速成】paddlepaddle圖像分類從模型自定義到測試?、

2.7 CNTK

github地址:https://github.com/Microsoft/CNTK。

(1) 概述

CNTK是微軟開源的深度學習工具包,它通過有向圖將神經(jīng)網(wǎng)絡描述為一系列計算步驟。在有向圖中,葉節(jié)點表示輸入值或網(wǎng)絡參數(shù),而其他節(jié)點表示其輸入上的矩陣運算。

CNTK允許用戶非常輕松地實現(xiàn)和組合流行的模型,包括前饋DNN,卷積網(wǎng)絡(CNN)和循環(huán)網(wǎng)絡(RNN / LSTM)。與目前大部分框架一樣,實現(xiàn)了自動求導,利用隨機梯度下降方法進行優(yōu)化。

(2)特點

CNTK性能較高,按照其官方的說法,比其他的開源框架性能都更高。

適合做語音,CNTK本就是微軟語音團隊開源的,自然是更合適做語音任務,使用RNN等模型,以及在時空尺度分別進行卷積非常容易。

【cntk速成】cntk圖像分類從模型自定義到測試

2.8 Matconvnet

github地址:https://github.com/vlfeat/matconvnet。

(1) 概述

不同于各類深度學習框架廣泛使用的語言Python,MatConvnet是用matlab作為接口語言的開源深度學習庫,底層語言是cuda。

(2) 特點

因為是在matlab下面,所以debug的過程非常的方便,而且本身就有很多的研究者一直都使用matlab語言,所以其實該語言的群體非常大。

【MatConvnet速成】MatConvnet圖像分類從模型自定義到測試?

2.9 Deeplearning4j

github地址:https://github.com/deeplearning4j/deeplearning4j。

(1) 概述

不同于深度學習廣泛應用的語言Python,DL4J是為java和jvm編寫的開源深度學習庫,支持各種深度學習模型。

(2)特點

DL4J最重要的特點是支持分布式,可以在Spark和Hadoop上運行,支持分布式CPU和GPU運行。DL4J是為商業(yè)環(huán)境,而非研究所設計的,因此更加貼近某些生產(chǎn)環(huán)境。

【DL4J速成】Deeplearning4j圖像分類從模型自定義到測試?

2.10 Chainer

github地址:https://github.com/chainer/chainer。

(1) 概述

chainer也是一個基于python的深度學習框架,能夠輕松直觀地編寫復雜的神經(jīng)網(wǎng)絡架構,在日本企業(yè)中應用廣泛。

(2) 特點

chainer采用“Define-by-Run”方案,即通過實際的前向計算動態(tài)定義網(wǎng)絡。更確切地說,chainer存儲計算歷史而不是編程邏輯,pytorch的動態(tài)圖機制思想主要就來源于chainer。

【chainer速成】chainer圖像分類從模型自定義到測試?

2.11 Lasagne/Theano

github地址:https://github.com/Lasagne/Lasagne。

(1)概述

Lasagen其實就是封裝了theano,后者是一個很老牌的框架,在2008年的時候就由Yoshua Bengio領導的蒙特利爾LISA組開源了。

(2)特點

theano的使用成本高,需要從底層開始寫代碼構建模型,Lasagen對其進行了封裝,使得theano使用起來更簡單。

【Lasagne速成】Lasagne/Theano圖像分類從模型自定義到測試?

2.12 Darknet

github地址:https://github.com/pjreddie/darknet。

(1) 概述

Darknet本身是Joseph Redmon為了Yolo系列開發(fā)的框架。

Joseph Redmon提出了Yolo v1,Yolo v2,Yolo v3。

(2) 特點

Darknet幾乎沒有依賴庫,是從C和CUDA開始撰寫的深度學習開源框架,支持CPU和GPU。Darknet跟caffe頗有幾分相似之處,卻更加輕量級,非常值得學習使用。

【darknet速成】Darknet圖像分類從模型自定義到測試?

1、今天開源的這一套代碼還只包含圖像分類任務,后續(xù)我們會增加其他計算機視覺任務,歡迎小伙伴們前來參與,需要力量!

2、開源框架眾多,使用過程中必會出現(xiàn)N多問題,如果你想要更多的交流,就來有三AI知識星球吧,來日方長。

感謝各位看官的耐心閱讀,不足之處希望多多指教。后續(xù)內(nèi)容將會不定期奉上,歡迎大家關注有三公眾號 有三AI

?

總結

以上是生活随笔為你收集整理的【完结】12大深度学习开源框架(caffe,tf,pytorch,mxnet等)快速入门项目的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。