自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

2019 深度學(xué)習(xí)工具匯總

新聞 深度學(xué)習(xí)
深度學(xué)習(xí)的進(jìn)步也嚴(yán)重依賴于軟件基礎(chǔ)架構(gòu)的進(jìn)展。 軟件庫如: Torch(2011), Theano(2012), DistBelief(2012), PyLearn2 (2013), Caffe(2013), MXNet (2015) 和 TensorFlow(2015) 都能支持重要的研究項目或商業(yè)產(chǎn)品。

 深度學(xué)習(xí)工具

深度學(xué)習(xí)的進(jìn)步也嚴(yán)重依賴于軟件基礎(chǔ)架構(gòu)的進(jìn)展。 軟件庫如: Torch(2011),  Theano(2012), DistBelief(2012), PyLearn2 (2013),  Caffe(2013), MXNet (2015) 和 TensorFlow(2015) 都能支持重要的研究項目或商業(yè)產(chǎn)品。

如果說深度學(xué)習(xí)的話,我個人接觸是在2015年,這個技術(shù)其實被雪藏了很久,在2012年又得到了完全的爆發(fā),至今已經(jīng)是AI界的主流,那今天就來說說最實際也是接觸最多的一個環(huán)節(jié),那就是框架,也可以說是工具。

大家所了解的工具不知道有哪些???

今天,我以我使用過的工具來和大家分享,希望你們可以找到自己喜歡的工具,與其一起去“ 煉丹 ”(不知道這個意思的,百度下)嘿嘿!

[[256719]]

在我研究生入學(xué)以來,接觸的深度學(xué)習(xí)工具一只手就可以數(shù)過來,有興趣的小伙伴可以深入搜索,網(wǎng)上還是有很多不同說法。我接下來根基我自己的實際體驗而大家說說深度學(xué)習(xí)工具這些事。 Matlab

Matlab

剛開始接觸深度學(xué)習(xí),第一個使用的工具就是:DeepLearnToolbox,一個用于深度學(xué)習(xí)的Matlab工具箱。 深度學(xué)習(xí)作為機(jī)器學(xué)習(xí)的一個新領(lǐng)域,它的重點是學(xué)習(xí)深層次的數(shù)據(jù)模型,其主要靈感來自于人腦表面的深度分層體系結(jié)構(gòu),深度學(xué)習(xí)理論的一個很好的概述是學(xué)習(xí)人工智能的深層架構(gòu)。這個工具箱比較簡單,當(dāng)時我就做了一個手寫數(shù)字和人臉分類(AR人臉數(shù)據(jù)庫)。主要包括如下:

NN :前饋BP神經(jīng)網(wǎng)絡(luò)的庫

CNN :卷積神經(jīng)網(wǎng)絡(luò)的庫

DBN :深度置信網(wǎng)絡(luò)的庫

SAE :堆棧自動編碼器的庫

CAE :卷積自動編碼器的庫

Util :庫中使用的效用函數(shù)

Data :數(shù)據(jù)存儲

tests :用來驗證工具箱正在工作的測試

案例如下

  1. rand('state',0)     
  2.   
  3. cnn.layers = {  
  4.   
  5. struct('type''i')            %輸入  
  6.   
  7. struct('type''c''outputmaps'6'kernelsize'5)  %卷積層  
  8.   
  9. struct('type''s''scale'2)    %下采樣層  
  10.   
  11. struct('type''c''outputmaps'12'kernelsize'5) %卷積層  
  12.   
  13. struct('type''s''scale'2)    %下采樣層  
  14.   
  15. };     
  16.   
  17. cnn = cnnsetup(cnn, train_x, train_y);   opts.alpha = 1;     
  18.   
  19. opts.batchsize = 50;     
  20.   
  21. opts.numepochs = 5;     
  22.   
  23. cnn = cnntrain(cnn, train_x, train_y, opts); save CNN_5 cnn;  
  24.   
  25. load CNN_5;     
  26.   
  27. [er, bad]  = cnntest(cnn, test_x, test_y);   figure; plot(cnn.rL);     
  28.   
  29. assert(er<0.12'Too big error');  

運行界面比較單一:

PyTorch

這個Pytorch庫的話,其實我沒怎么用,就是隨便試玩了下,個人感覺還是不要碰了,沒啥意思,我接下來也就簡單聊一下。 他是一個基于Python的科學(xué)計算包,目標(biāo)用戶有兩類。一類是 為了使用GPU來替代numpy;另一類是一個深度學(xué)習(xí)援救平臺:提供最大的靈活性和速度。

以深度學(xué)習(xí)來說,可以使用 torch.nn 包來構(gòu)建神經(jīng)網(wǎng)絡(luò)。已知道autograd包,nn包依賴autograd包來定義模型并求導(dǎo)。一個nn.Module包含各個層和一個faward(input)方法,該方法返回output。

案例如下

  1. import torch from torch.autograd 
  2.  
  3. import Variable import torch.nn   
  4.  
  5. import torch.nn.functional as F   
  6.  
  7. class Net(nn.Module):      
  8.  
  9. def __init__(self):          
  10.  
  11. super(Net, self).__init__()          
  12.  
  13. # 1 input image channel, 6 output channels, 5*5 square convolution          
  14.  
  15. # kernel           
  16.  
  17. self.conv1 = nn.Conv2d(165)                  
  18.  
  19. self.conv2 = nn.Conv2d(6165)          
  20.  
  21. # an affine operation: y = Wx + b              
  22.  
  23. self.fc1 = nn.Linear(16 * 5 * 5120)              
  24.  
  25. self.fc2 = nn.Linear(12084)              
  26.  
  27. self.fc3 = nn.Linear(8410)       
  28.  
  29. def forward(self, x):          
  30.  
  31. # max pooling over a (2, 2) window 
  32.  
  33. x = F.max_pool2d(F.relu(self.conv1(x)), (22)) 
  34.  
  35. # If size is a square you can only specify a single number 
  36.  
  37. x = F.max_pool2d(F.relu(self.conv2(x)), 2
  38.  
  39. x = x.view(-1self.num_flat_features(x)) 
  40.  
  41. x = F.relu(self.fc1(x)) 
  42.  
  43. x = F.relu(self.fc2(x)) 
  44.  
  45. x = self.fc3(x)          
  46.  
  47. return x       
  48.  
  49. def num_flat_features(self, x):          
  50.  
  51. size = x.size()[1:] 
  52.  
  53. # all dimensions except the batch dimension          
  54.  
  55. num_features = 1          
  56.  
  57. for s in size:              
  58.  
  59. num_features *= s          
  60.  
  61. return num_features 
  62.  
  63. net = Net()  
  64.  
  65. print(net) 

具體操作和細(xì)節(jié)過程,有興趣的可以抽空去玩玩!

Caffe

Caffe的作者為UC Berkeley大學(xué)的賈揚清。Caffe是一個c++/CUDA架構(gòu),支持命令行、Python、Matlab接口,可以在CPU/GPU上運行。

深度學(xué)習(xí)不斷在發(fā)展,其對應(yīng)的實驗工具也隨著得到了大家的重視。Caffe就是現(xiàn)在流行的深度學(xué)習(xí)框架之一,工具內(nèi)已經(jīng)提前提供了模板,也就是該工具有現(xiàn)成的編程框架,而且可以與現(xiàn)狀流行的圖形計算GPU聯(lián)合使用,加快網(wǎng)絡(luò)訓(xùn)練的速度,流行的神經(jīng)網(wǎng)絡(luò)框架算法都可以在Caffe中運行,而且可以自己設(shè)置框架,因為Caffe已經(jīng)提前就做好了各結(jié)構(gòu)的定義,研究學(xué)者也可以根據(jù)自己的設(shè)計需求去進(jìn)行相應(yīng)的添加,設(shè)計出新的深度學(xué)習(xí)框架去完成所需的任務(wù)。

Caffe框架中,主要就是 Blobs , Layers 和 Nets 三大類結(jié)構(gòu),而且由于是事前定義好的結(jié)構(gòu),所以在使用該框架的時候是不可以更改。

Blobs

Blob是Caffe框架中的一個主要結(jié)構(gòu),其為包裝器,在使用Caffe框架時,數(shù)據(jù)都要被設(shè)置成格式,只有這樣的數(shù)據(jù)格式才能在Caffe框架中進(jìn)行執(zhí)行和處理。并且在Caffe設(shè)計時,很多函數(shù)和類都提前設(shè)計好了,在執(zhí)行的過程中是不可以修改其結(jié)構(gòu),否則將無法調(diào)用其中的函數(shù),導(dǎo)致網(wǎng)絡(luò)訓(xùn)練的失敗。

Blob的格式主要由Number,Channel,Height和Width四個元素組成,如果在進(jìn)行圖像處理,則表示圖像通道(一般彩色圖像為3通道的數(shù)據(jù),Height和Width就表示輸入數(shù)據(jù)的尺寸。而對于的元素,其主要體現(xiàn)在訓(xùn)練過程中,因為訓(xùn)練的時候需要選擇一次性輸入多少數(shù)據(jù),就是一次輸入數(shù)據(jù)的數(shù)量,通常稱之為Batch。這種訓(xùn)練方式也可以大大緩解內(nèi)存的不足。

Layers

Layers是Caffe框架中網(wǎng)絡(luò)構(gòu)成的重要結(jié)構(gòu)之一,網(wǎng)絡(luò)的構(gòu)成就是因為Layers的作用,通過接收輸入和輸出數(shù)據(jù),最后通過內(nèi)部的計算輸出。Caffe在使用網(wǎng)絡(luò)層的時候,其定義方式特別簡單明了,大致都分為三個小步驟,如下: 
1)建立網(wǎng)絡(luò)層,且建立層之間的連接關(guān)系,可以通過隨機(jī)初始化的操作,去對一些網(wǎng)絡(luò)層的變量進(jìn)行初始化; 
2)網(wǎng)絡(luò)訓(xùn)練過程中,首先計算前向傳播,在改過過程中Layers接受上一層的輸出數(shù)據(jù)作為本次的輸入數(shù)據(jù),最后通過內(nèi)部 
的計算進(jìn)行輸出。 
3)前向傳播后,由于得到的結(jié)果與期望相差較大,通過之前提及到的反向傳播來進(jìn)行計算去調(diào)整網(wǎng)絡(luò)的參數(shù)值,以達(dá)到最 
優(yōu)值,并且在反向傳播計算時,Layers會把每次計算的梯度值存放在該層中。

Nets

之前介紹的Layers就是Nets的一個子元素,通過多種Layers的組合連接得到整個Nets,在該結(jié)構(gòu)中,Nets定義了網(wǎng)絡(luò)的各 Layers、Input和Output。

例如Caffe定義中最基本的隱層網(wǎng)絡(luò),其定義如下:

  1. name: “LogReg”  
  2. layers {  
  3. name: “mnist”  
  4. type: DATA  
  5. top: “data”  
  6. top: “label”  
  7. data_param {  
  8. source: “input_leveldb”  
  9. batch_size: 64  
  10. }} 
  11.  
  12. layers {  
  13. name: “ip”  
  14. type: INNER_PRODUCT  
  15. bottom: “data”  
  16. top: “ip”  
  17. inner_product_param {  
  18. num_output: 2  
  19. }} 
  20.  
  21. layers {  
  22. name: “loss”  
  23. type: SOFTMAX_LOSS  
  24. bottom: “ip”  
  25. bottom: “label”  
  26. top: “loss”  

Caffe優(yōu)勢

  • Caffe作為一個開源的框架,其表達(dá)式的結(jié)構(gòu)得到很多研究學(xué)者的喜愛,因為其可以鼓勵更過的人去進(jìn)行創(chuàng)新、修改完善及實際應(yīng)用。在框架中,網(wǎng)絡(luò)的模型、設(shè)計和優(yōu)化過程都是指令來調(diào)用和執(zhí)行,不像其他工具框架,需要通過硬編碼來獲取相應(yīng)的操作。而且在Caffe應(yīng)用中可以使用CPU中央處理器和GPU圖形圖像處理器進(jìn)行學(xué)習(xí),而且兩個處理器可以來回切換,只要通過在GPU機(jī)器上設(shè)置一個指令就可以,而且GPU的使用在普遍增加,因為其可以給予網(wǎng)絡(luò)的訓(xùn)練速度,減少訓(xùn)練的時間,提高網(wǎng)絡(luò)的訓(xùn)練效率,進(jìn)一步對網(wǎng)絡(luò)進(jìn)行微調(diào)。

  • 開源框架的好處就是可以被大家擴(kuò)展,所以Caffe促進(jìn)了其自身的開發(fā),在賈揚清創(chuàng)建Caffe之后,僅在一年時間里,就已經(jīng)有上千位研究愛好者參加了開發(fā),而且他們都做出了很大的貢獻(xiàn)才會有現(xiàn)在完善的深度學(xué)習(xí)框架,現(xiàn)在該框架還在不斷進(jìn)行優(yōu)化和發(fā)展。

  • 上手快,因為網(wǎng)絡(luò)模型不需要用代碼的形式表現(xiàn)出來,只需要通過文本形式表現(xiàn),并且Caffe框架中已定義了該模型。

  • Caffe的出現(xiàn)特征事宜學(xué)校機(jī)構(gòu)的實驗室和工業(yè)相關(guān)部門的使用。因為Caffe與英偉達(dá)GPU合用,可以達(dá)到很高的效率。曾有過一個實驗,用一臺英偉達(dá)生產(chǎn)的K40圖形圖像處理器去訓(xùn)練圖片,一天下來可以執(zhí)行六千萬以上的訓(xùn)練圖像。現(xiàn)在其表現(xiàn)的速度,在常用的深度學(xué)習(xí)框架中,可以算得上最快的框架之一。

  • 方便快速地使用到其他任務(wù)重,因為Caffe已經(jīng)定義了各層的類型,只需通過簡單調(diào)用來定義自己設(shè)計的網(wǎng)絡(luò)模型即可。

TF

Google在2011年推出人工深度學(xué)習(xí)系統(tǒng)——DistBelief。通過DistBelief,Google能夠掃描數(shù)據(jù)中心數(shù)以千計的核心,并建立更大的神經(jīng)網(wǎng)絡(luò)。這個系統(tǒng)將Google應(yīng)用中的語音識別率提高了25%,以及在Google Photos中建立了圖片搜索,并驅(qū)動了Google的圖片字幕匹配實驗。DistBelief還存在不少不足和限制。它很難被設(shè)置,和Google內(nèi)部的基礎(chǔ)設(shè)施聯(lián)系也過于緊密,這導(dǎo)致研究代碼機(jī)會不可能分享。  

針對以上問題,Google在2015年Google Research Blog宣布推出新一代人工智能學(xué)習(xí)系統(tǒng)——TensorFlow。  

TensorFlow是一個異構(gòu)分布式系統(tǒng)上的大規(guī)模機(jī)器學(xué)習(xí)框架,移植性好(小到移動設(shè)備如手機(jī),大到大規(guī)模集群,都能支持),支持多種深度學(xué)習(xí)模型。根據(jù)Google說法,TensorFlow是綜合的、靈活的、可移植的、易用的,更為關(guān)鍵的,它是開源的。同時,TensorFlow的速度相比前代DistBelief有了不小的提升,在一些跑分測試中,TensorFlow的得分是第一代系統(tǒng)的兩倍。

盡管如此,TensorFlow的效率仍然比不過其他大部分開源框架。不過,隨著TensorFlow源碼逐步開放,對新硬件、新設(shè)備、新的加速如cuDNN的支持力度不斷提升,其成為目前極具潛力的深度學(xué)習(xí)。

有興趣可以體驗下PlayGround,其是一個用于教學(xué)目的的簡單神經(jīng)網(wǎng)絡(luò)的在線演示、實驗的圖形化平臺,非常強(qiáng)大地可視化了神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程。使用它可以在瀏覽器里訓(xùn)練神經(jīng)網(wǎng)絡(luò),對 Tensorflow有一個感性的認(rèn)識。

TF缺點

  • TensorFlow 的每個計算流都必須構(gòu)造為一個靜態(tài)圖,且缺乏符號性循環(huán)(symbolic loops),這會帶來一些計算困難;

  • 沒有對視頻識別很有用的三維卷積(3-D convolution);

  • 盡管 TensorFlow 現(xiàn)在比起始版本快了 58 倍,但在執(zhí)行性能方面依然落后于競爭對手。

今天就到此位置吧,感覺講的有點多,但是又不是很深入,有機(jī)會來一次深度學(xué)習(xí)工具專題,我們大家一起慢慢聊!

責(zé)任編輯:張燕妮 來源: 計算機(jī)視覺戰(zhàn)隊
相關(guān)推薦

2017-02-15 10:01:49

大數(shù)據(jù)機(jī)器學(xué)習(xí)深度學(xué)習(xí)

2017-03-07 13:14:04

深度學(xué)習(xí)

2019-09-26 05:16:24

深度學(xué)習(xí)數(shù)據(jù)科學(xué)神經(jīng)網(wǎng)絡(luò)

2019-11-19 09:58:16

機(jī)器學(xué)習(xí)人工智能框架

2019-12-17 09:05:47

深度學(xué)習(xí)編程人工智能

2019-04-25 16:03:00

深度學(xué)習(xí)編程人工智能

2022-09-28 14:13:03

Linux工具

2022-05-31 10:50:40

Linux監(jiān)控工具

2009-09-08 18:14:12

CCNA學(xué)習(xí)筆記

2021-03-08 11:28:59

人工智能深度學(xué)習(xí)Python

2016-12-06 10:39:54

剖析建模開源工具

2020-06-18 15:45:54

AWS機(jī)器學(xué)習(xí)人工智能

2019-08-02 09:26:24

深度學(xué)習(xí)框架排行榜

2017-09-01 10:11:04

深度學(xué)習(xí)可視化工具

2011-04-02 10:29:20

Linux工具

2017-07-18 18:06:00

JavaScript框架類庫

2017-06-27 14:49:20

深度學(xué)習(xí)機(jī)器學(xué)習(xí)

2017-03-06 16:56:37

深度學(xué)習(xí)本質(zhì)現(xiàn)狀

2021-04-16 11:31:24

人工智能深度學(xué)習(xí)

2023-07-27 13:23:41

點贊
收藏

51CTO技術(shù)棧公眾號