小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

【github干貨】主流深度學(xué)習(xí)開源框架從入門到熟練

 有三AI 2020-11-27

言有三

畢業(yè)于中國科學(xué)院,計算機視覺方向從業(yè)者,有三AI學(xué)院等創(chuàng)始人

作者 | 言有三

編輯 | 言有三

今天送上有三AI學(xué)院第一個github項目

01

項目背景

目前深度學(xué)習(xí)框架呈百家爭鳴之態(tài)勢,光是為人熟知的就有caffe,tensorflow,pytorch/caffe2,keras,mxnet,paddldpaddle,theano,cntk,tiny-dnn,deeplearning4j,matconvnet等,一個合格的深度學(xué)習(xí)算法工程師怎么著都得熟悉其中的3個以上吧。

而且,學(xué)習(xí)不應(yīng)該停留在官方的demo上,而是要學(xué)會從自定義數(shù)據(jù)的讀取,自定義網(wǎng)絡(luò)的搭建,模型的訓(xùn)練,模型的可視化,模型的測試與部署等全方位進(jìn)行掌握。

因此,我們開設(shè)了這個github項目,以圖像分類任務(wù)為基準(zhǔn),帶領(lǐng)大家一步一步入門,后續(xù)會增加分割,檢測等任務(wù)。

當(dāng)前的圖像分類任務(wù)為二分類的表情分類任務(wù),為微笑與非微笑兩個類別,案例樣本如下。

無表情

微笑

02

框架簡介

總的來說,深度學(xué)習(xí)系統(tǒng)通常有兩種編程方式,一種是聲明式編程(declarative programming),用戶只需要聲明要做什么,而具體執(zhí)行則由系統(tǒng)完成。以Caffe,TensorFlow的計算圖為代表。優(yōu)點是由于在真正開始計算的時候已經(jīng)拿到了整個計算圖,所以可以做一系列優(yōu)化來提升性能。實現(xiàn)輔助函數(shù)也容易,例如對任何計算圖都提供forward和backward函數(shù),另外也方便對計算圖進(jìn)行可視化,將圖保存到硬盤和從硬盤讀取。缺點是debug很麻煩,監(jiān)視一個復(fù)雜的計算圖中的某個節(jié)點的中間結(jié)果并不簡單,邏輯控制也不方便。

一種是命令式編程(imperative programming),以numpy,torch/pytorch為代表,每個語句按照原來的意思順序執(zhí)行。它 的特點是語義上容易理解,靈活,可以精確控制行為。通??梢詿o縫地和主語言交互,方便地利用主語言的各類算法,工具包,debug和性能調(diào)試器,但是實現(xiàn)統(tǒng)一的輔助函數(shù)和提供整體優(yōu)化都很困難。

綜上,各有優(yōu)劣,自由選擇,這里不是為了給大家詳細(xì)介紹框架,而是快速掃盲,更多請閱讀對應(yīng)文章和官方文檔,相關(guān)代碼進(jìn)行學(xué)習(xí)。

2.1 caffe

Caffe是伯克利的賈揚清主導(dǎo)開發(fā),以C++/CUDA 代碼為主,最早的深度學(xué)習(xí)框架之一,比 TensorFlow、Mxnet、Pytorch 等都更早,需要進(jìn)行編譯安裝。

支持命令行、Python和Matlab接口,單機多卡、多機多卡等都可以很方便的使用,快速入門見下文。

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

2.2 tensorflow

TensorFlow是Google brain推出的開源機器學(xué)習(xí)庫,與Caffe一樣,主要用作深度學(xué)習(xí)相關(guān)的任務(wù)。與Caffe相比TensorFlow的安裝簡單很多。

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

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

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

(2)運行會話,執(zhí)行圖中的運算,可以看作是Caffe中的訓(xùn)練過程。只是TensorFlow的會話比Caffe靈活很多,由于是Python 接口,取中間結(jié)果分析,Debug等方便很多,快速入門見下文。

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

2.3 mxnet

mxnet是amazon的官方框架,它嘗試將上面說的兩種模式無縫的結(jié)合起來。在命令式編程上MXNet提供張量運算,進(jìn)行模型的迭代訓(xùn)練和更新中的控制邏輯;在聲明式編程中MXNet支持符號表達(dá)式,用來描述神經(jīng)網(wǎng)絡(luò),并利用系統(tǒng)提供的自動求導(dǎo)來訓(xùn)練模型,快速入門見下文。

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

2.4 pytorch 

一句話總結(jié)Pytorch = Python + Torch。

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

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

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

2.5 paddlepaddle 

正所謂google有tensorflow,facebook有pytorch,amazon有mxnet,作為國內(nèi)機器學(xué)習(xí)的先驅(qū),百度也有PaddlePaddle,其中Paddle即Parallel Distributed Deep Learning(并行分布式深度學(xué)習(xí)),整體使用起來與tensorflow非常類似,可參考下文。

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

2.6 keras

Keras是一個非常流行、簡單的深度學(xué)習(xí)框架,它的設(shè)計參考了torch,用Python語言編寫,是一個高度模塊化的神經(jīng)網(wǎng)絡(luò)庫,能夠在TensorFlow,CNTK或Theano之上運行。 Keras的特點是能夠快速實現(xiàn)模型的搭建,是高效地進(jìn)行科學(xué)研究的關(guān)鍵,可參考下文。

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

2.7 其他

除了以上最常用的框架,還有theano,cntk,tiny-dnn,deeplearning 4j,matconvnet等,我們后續(xù)會補充教程,增強github案例,歡迎大家關(guān)注,下面是github項目鏈接,歡迎來做貢獻(xiàn)。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多