1. 程式人生 > >開源神經網路框架Caffe2全介紹

開源神經網路框架Caffe2全介紹

640?wx_fmt=png&wxfrom=5&wx_lazy=1

本文作者吳逸鳴,整理自作者在GTC China 2017大會上的演講,首發於作者的知乎文章。

我個人認為這是一份很值得分享的資料,因為

  • 這應該是第一次使用全中文來講解Caffe2和FB的AI應用的演講

  • 觀看這次演講不需要機器學習/神經網路,甚至電腦科學的基礎。它適合每一個願意瞭解人工智慧、神經網路和Caffe2的人。

  • 我準備了很久!(這才是主要原因哈哈哈,但第一次上臺還蠻緊張)

在觀看視訊前你可能需要注意以下幾點:

  • 該視訊所有權解釋權各種權全都歸英偉達所有(點選閱讀原文檢視演講視訊)

  • 此次演講只是談論了我自己的一些看法,和FB無關

  • 我的演講稿和視訊裡說的可能有一些出入。有的地方為了更好地讓大家理解,我做了自己的解釋。演講稿中有可能有的地方我懶得寫但是我在演講中說了。有的地方是因為我理解不夠直接是錯誤的。還有各種錯別字。這些都歡迎大家指正,互相學習。

以下是演講原文:

大家好 我叫吳逸鳴。我來自Facebook的Caffe2組。

演講開始前,想先給大家看一個demo。這是一個自動把圖片和視訊轉換成大師美術風格的神經網路演算法。在大約兩年前剛被髮表的時候,在伺服器上處理單張照片需要秒級別的時間。到現在,我們已經成功做到實時的視訊風格轉換。不僅實時,在我們同事的努力下,我們還做到了在手機移動端本地實施演算。這相較於之前,已經有好幾個量級的效率提升。

今天,我想給大家介紹一下讓這一切變成現實,以及將各種AI演算法部署到產品中的神經網路框架:Caffe2。

Caffe2是:

  • 一個輕量化的深度學習演算法框架

  • caffe2 主要為產品級別的深度學習演算法設計

  • 為移動端實時計算做了很多優化

  • 同時支援大規模的分散式計算

  • Caffe2是一個跨平臺的框架

          支援移動端iOS, Android, 伺服器端Linux, Mac, Windows, 甚至一些物聯網設              備如RaspberryPi, NVIDIA Jetson TX2等平臺部署

說到這裡,我們需要暫停一下。深度學習框架是什麼?若放在五年前,你甚至很難用這六個字造句。Caffe2是什麼?你們會不會給咖啡拉花?這些問題別說外行,很多科技企業的內行包括一些我的學長、別的部門同事也會有這些疑惑。

簡單來說,從我個人的理解,深度學習,作為機器學習的一個分支,是一個尋找理想中的函式fx的過程。這個函式代表了從資料輸入x到期待輸出y的某種對映。在深度學習裡, 這個函式是多層有疊加的。在這裡你的輸入x可以是一些圖片,可以是音訊,可以是一些高緯度的向量用。函式的輸出y可以是推薦系統的排位、另一種語言的翻譯或者是無人車對下一秒操作的決策。

深度學習,和別的AI的演算法,要為社會創造價值,還得落到產品中去。在工業界,我們訓練和部署深度學習演算法的時候,通常有以下幾個環節

  • 你有資料

  • 你有模型

  • 你想要找到那個神器的函式fx。這個不斷嘗試和逼進的過程,我們稱為訓練

  • 你可能需要在移動端/伺服器端/物聯網裝置/嵌入式系統上部署你的神經網路演算法

那麼Caffe2作為一個神經網路框架,為你提供了模型搭建、訓練、和跨平臺的部署。簡而言之,全包辦了。

在設計開發Caffe2中,我們認為一個好的經的起業界規模考驗的神經網路框架需要具備:

  • 支援最新的計算模型

  • 分散式訓練

  • 高模組化

  • 跨平臺的支援

  • 高效率

今天我想大家展示一些Caffe2的例子。談一下在FB我們如何用Caffe2來搭建我們的AI產品。

在FB,我們使用Caffe2來搭建全套的AI產品和功能,其中包括

  • 計算機視覺相關

  • 機器翻譯

  • 語音識別

  • 推薦系統

首先是移動端的Caffe2

從設計之初,Caffe2就十分重視在移動端部署神經網路。我們一直在優化Caffe2在移動端的效能,並保證我們能支援各類移動計算框架。現在Caffe2主要為15年以後的機型優化,但也支援13年以後的機型。

為了在手機上這裡是一個使用OpenGL在iOS和安卓裝置上加速的例子。通過我們在移動端的努力,原本在CPU上每秒只能處理4幀的演算法,利用手機端的GPU,我們實現了24+fps每秒的效果,實現了實時計算修改。?

我們和高通合作一起在搭載了高通晶片的移動端裝置上加速神經網路。這是一個移動端影象識別的例子,可以看到在移動端,不僅是神經網路風格變換演算法,影象分類演算法也可以做到超過實時的演算。

?

在這些移動端的樣例背後是我們在各種裝置上的優化。在蘋果裝置上,我們是第一個完全把Metal,也就是iOS的GPU API完全融合到後端的框架。如果你是一個移動開發者,準備好自己的模型後,通過簡單幾行呼叫,你就可以讓你的神經網路在蘋果裝置上用GPU執行起來。

使用Caffe2移動端的GPU實現可以給你的網路帶來實質性的加速和能耗上的優化

這一切都是開源的。

?

在安卓裝置上 我們用OpenGL來使用GPU加速神經網路的執行。這之中我們有一整套基於OpenGL的GPU底層運算實現。CPU只需排程,無需處理資料。

?

在部署產品的時候,有時使用者終端裝置只有CPU的硬體支援。我們對arm架構的CPU有Neon(一個併發指令集的拓展)的實現。我們也維護開發呼叫自己的開源CPU高效能運算庫NNPack。我們也會做Caffe2編譯檔案的壓縮來保證把AI新增到你的產品不會成為空間上的負擔。

總而言之,Caffe2提供了從入門機到旗艦機的一整套移動部署解決方案。

?

另一個我想分享的Caffe2案例是我們的機器翻譯系統。

在我們的產品中,我們有來自世界各地的超過20億使用者。為他們提供高質量的翻譯,是一個一個很複雜的問題。左邊的圖上是一個從土耳其語翻譯到英文的例子。上半部分翻譯的不好,在英語裡是不流暢的。下半部分翻譯的好。可見翻譯的質量、支援語言型別的數量至關重要。在FB,如果中文到英文和英文到中文算兩種翻譯的話,每天我們需要提供2000多種翻譯。處理45億條翻譯請求。今天,我們可以很驕傲地說,這一切底下的演算法和服務,都是由Caffe2支援的。

在這個專案中我們使用了seq2seq LSTM model with attention。這是現在業界主流的翻譯模型。

我們使用Caffe2做大規模的訓練,並在GPU/CPU上都對相應的計算做了優化。

?

在這些優化中,最值得一提的是我們對迴圈神經網路的記憶體優化。迴圈神經網路的單元,英文裡稱之為Cell,往往需要把自己的輸出,當作自己的輸入,迴圈執行。所以,我們稱之為迴圈。在真實實現的過程中,這就好比把同樣的單元展開很多遍。這種計算的模式,使得迴圈神經網路的計算量很大。要處理2000+種翻譯方向,計算量更是有量級上的增長。

優化迴圈網路的計算顯得極為重要。Caffe2為迴圈神經網路提供了:

  • 反向運算時的展開單元記憶體重用

  • 替換記憶體中部分引數的空間,當需要的時候再重新計算引數

  • 專門正向推導模式提供進一步的記憶體空間優化

  • 對於多層的迴圈神經網路單元,他們展開後會在計算圖中形成一個運算單元的陣列。

  • 我們儘可能地依照對角線的方式執行這些運算來儘可能達到最大的並行化。

在這些優化之後,我們把我們產品中的迴圈神經網路效率提高了2.5倍。達到了20億使用者級別的訓練和部署要求。

?

更值得興奮的是,我們從上個月開始開源了我們的迴圈神經網路支援。開源社群和在座的每一位也可以開始用Caffe2來優化你的迴圈神經網路。從框架本身,呼叫Caffe2的迴圈網路引擎對效能幾乎沒有影響。Caffe2支援主流的迴圈神經網路單元包括LSTM,Multiplicative Integration LSTM(這是一種在單元裡面加上乘法的更復雜的LSTM單元)和帶attention的模型等。之前我提到的記憶體和正向推導時的優化,都已經開源。

?

和翻譯相關的一個例子是語音識別,在fb,和語音相關的應用有以下這些。

1.自動語音識別

顧名思義,這項任務中輸入是一段音訊,輸出可以是對應的文字,可以是一連串的音標等。Caffe2提供了自動語音識別中非常常用的雙向LSTM單元,Caffe2支援CE和 CTC這兩種演算法,並且對他們做了速度上的優化。這兩種是現在ASR,自動語音識別中主流的輸出和真實標註(真實句子)之間差異性的方法。

2.語音合成

剛才的自動語音識別是從音訊到文字。語音合成,是從文字,合成一段聽起來像人講話的音訊。一般語音合成現在有用多層神經網路實現的,有用LSTM實現的、有用卷積神經網路實現的。我們生成的模型回去模擬聲音的音長,頻率,峰值和聲音的間歇性。

我們還有一些別的聲音上的應用,在這裡由於時間的原因,不做過多的展開了。

?

那麼,到現在,我們已經通過在FB的例子講述了Caffe2在手機端的部署,包括移動端CPU,移動端GPU的優化,這樣來支援從低到高各種型別的機型。

我們介紹了我們在自然語言處理領域, 也就是我們機器翻譯的成果。Caffe2對迴圈神經網路做了許多優化,使得我們訓練的模型經受起了45億級別的單日訪問量的考驗

我們也介紹了在語音領域,包括ASR、TTS實現的各種模型,說明Caffe2對於不同模型都有良好的支援。

但是接下來,我想給大家分享的,是任何一個工業級的機器學習框架都需要解決的應用場景——分散式訓練。

這項工作的名稱,叫做 ImageNet in 1 hr,中文叫做1小時完成ImageNet挑戰。這項工作是由我們以下的同事一同完成的。

?

ImageNet是一個由斯坦佛大學主導的大型開源影象資料集。ImageNet挑戰是一個經典的計算機視覺挑戰。在這項任務中,我們的模型需要做影象分類,也就是說,給它一張圖片,他需要告訴我這是貓還是狗還是飛機還是船還是汽車。

如果羅列一些簡單的資料:

1. 使用當前主流的影象識別模型,單張圖片大概要做80億次浮點數計算

2. 在ImageNet資料集中大約有120萬張影象

3. 為了訓練出一個現在學界認可的模型,我們大約需要把這120萬張圖片給我們的模型看100遍

4. 如果做一下簡單的計算,我們完成這項任務需要用到1個exa個浮點數計算。exa有多少呢?大約是10的18次方,是Giga往上走3級。這個任務的計算量,真的很大。

在這項任務裡,我們把本來需要好幾天的訓練量,用1個小時的時間訓練完了。而且我們用的是全開源的軟體框架,深度學習用Caffe2,網路排程同步用我們開源的gloo,硬體就是你也能買得到的英偉達的GPU。

好,那我們來自習地介紹一下這項任務。我們要在ImgeNet-1k資料集上做影象分類。這其中ImageNet-1k 的影象有一千種類別。每一張圖片只有一個類別訓練資料集,像我之前說的,有120萬張圖片。驗證集中有5萬張圖片。我們在機器學習中,我們會單獨拿出一些資料作為驗證集,來調整一些模型的引數,或者監控一下模型訓練的好不好。我們在訓練的過程中也需要跑這5萬張圖片的正向推導。

?

輸入的格式是NCHW -》輸出是1 hot label的形式。現在學術屆在這個資料集上最領先的是我們FB的同事 kaiming大神的工作:rextnet,大概達到了22%的訓練錯誤率。也就是說,給模型看100張來自ImgeNet訓練集的圖片,他期望上能說對其中78張圖片的類別。相較於2012年AlexNet橫空出世時的36-40的top1 error rate,我們深度學習的研究者已經有了很大的進步。

在這項任務中,我們把單次處理的資料量上升到8192張圖片。這在機器學習的層面會帶來一些挑戰,在接下來的ppt中我會提到。另外,我們在單次訓練中我們同時使用了256塊GPU,搭建這樣一套系統也充滿了挑戰。

?

在訓練神經網路的過程中我們關注訓練上的錯誤率。這裡是一張訓練錯誤率隨著訓練的資料增加而下降的圖。我們可以看到y軸是訓練的錯誤率,這個數值越低說明我們的模型能夠在訓練集資料上分類得更準確。X軸是資料的期的數量。一期(Epoch)資料指的是我們的模型把訓練資料完全過一遍,在imagenet-1k的任務中大概100萬張圖片。我們可以看到,橘黃色的線是一個標準的訓練resnet50曲線。大概經過了90期資料後,訓練精度達到了20出頭。這條橘黃的線可以算一個基準,我們的目標就是去逼近這條黃線。

?

因為我們期待能夠在分散式的機群上做資料並行的訓練,意味著我們單次處理的資料量要遠大於標準的256張圖片。那麼假設我們直接把單次處理的資料量增加到8192張,會發生什麼呢?我們就得到了藍色的訓練曲線。在大約90期資料後,模型的訓練錯誤率大約停在41%左右。這兩者之間的差距很大。藍色的訓練曲線完全不達標。(但值得一提的是,在一個1000類的分類任務中,如果我們只有一個隨機分類器,我們的訓練錯誤率大概在99.9%左右。這個模型雖然和我們心中標準差了很多,但他顯然是具備一點關於這些影象上分類的知識的)

之前有一些工作,包括李沐學長的文章裡,都提出過通過同比例放大學習效率(learning rate)來應對大批量的資料的想法。我們也嘗試了相應的做法,得到了新的藍線。新的訓練引數中,因為我們把同批資料量從256放大了32倍到8192,所以我們把學習效率從原來的0.1放大到3.2 。可以看到訓練錯誤率有了很不錯的提升。從之前的41左右的錯誤率下降到24.84左右。這個結果雖好,但和我們期待的目標還有大約1%的差距。不熟悉影象分類的人可能會問,這1%的差距也追求,會不會太苛刻了?其實在1000類的影象分類裡,如果把分類結果打印出來,這1%的差距有時在有些類別上會顯得特別明顯。

?

那麼經過我們同事的一番探索,在一番努力後,我們找到了一種循序增大學習效率的辦法,使得分散式的訓練曲線和我們目標的標準訓練曲線收斂在一樣的訓練錯誤率上。我們總結了一系列在大規模分散式上訓練神經網路的經驗,更多的內容可以到我們的論文中檢視。

?

說完了機器學習理論上的困難和解決方案後,我們來說一說這項工作中在系統方面的挑戰。之前提到過,在一塊英偉達Tesla P100上ResNet-50的訓練資料吞吐量大約是230張每秒。

為了訓練出一個比較理想的模型,之前的收斂圖表也顯示了,我們大概需要把整個資料集處理100遍。

?

那麼120萬張圖片過100次是1億2千萬張圖片,按照230張圖片每秒的速度,訓練一個resnet-50模型需要6天。

這時我們就不得不開始使用分散式訓練。也就是用大規模機群來完成訓練演算法。

這裡給大家展示了一張分散式訓練的簡易說明圖。每一個虛線的方框代表一張GPU或者一臺機器。方框之間用PCIe或者網線連線通訊。在這項工作裡我們使用資料並行的訓練方法。資料並行指的是每個機器/GPU同時處理不同的資料,並且在完成後做運算結果的總和同步。在這張圖裡,每個batch代表了小批的資料。我們把batch 1到k都放在k個機器上分別處理。在真實的例子裡,一小批資料有32張圖片,k=256,這樣就做到一次處理8192張圖片,也就是我們之前理論得到的單次大批資料量。說完了圖片中的輸入Input,我們把輸入放到方程中,也就是我們用Caffe2搭建的ResNet-50模型。注意在這k臺機器上每一臺都有函式引數的一套拷貝。我們同時在這些GPU/機器上呼叫模型方程,得到分類器的輸出,以及關於真實資料標註的邏輯迴歸損失。在這張圖裡就是結果Result。

?

上一部我在每臺機器上得到了模型在所有資料上的邏輯迴歸損失。那麼利用Caffe2提供的自動求導功能,我們可以針對本地的資料算出我們的模型在這些資料上的本地導數, local grad。那麼下一步呢?下一步如果我們像普通的機器學習訓練演算法直接把導數加到本地的引數上,那麼我們就變成了同時訓練k個模型了。這和我們的目標不符合,我們的目標是訓練一個好的模型,這個模型需要把所有資料看100遍。所以我們需要先同步(synchronize)所有機器上算出來的導數,得到一個統一的導數,再作用到每分本地引數拷貝上。

在資料並行的分散式訓練中,同步一直是最重要的一環。在我們的這次訓練中,我們使用的是一種叫做全相加的同步方式。也就是把每個機器算出來的導數,全都加在一起。這裡用P來代表,也可以用G,指代更加清楚。

?

一個資訊:ResNet-50一共有2千5百萬個引數需要算導數並同步。那麼在計算機裡,大約是100MB的大小。這在今天這個時代,聽起來不是什麼海量資料。

這裡需要提出一個概念:同步效率。這個指標代表了同步給系統帶來時間延遲有多少。

?

他的分子上是兩項時間的相加。Tf代表在神經網路正向運算的時候消耗的時間,Tb代表反向運算的時間。這兩項時間相加代表了在假象的完美的0同步時間系統中訓練需要的時間。分母上第一項依然是正向時間Tf,第二項是反向時間和同步時間的最大值。同步時間由我們需要傳輸的資料量M除以系統頻寬B得到。之所以在返鄉時間和同步時間取最大值是因為神經網路引數反向運算是有序的。在算完了反向第一層的引數導數後我們就能開始同步。

理論上在這個效率是100%的時候,同步不會對訓練系統帶來任何延遲。效率越高,同步給系統帶來的延遲最少。

如果我們把實際的資料帶入到上一頁的公式中。在Tesla P100上resnet單次處理32張圖片,正向時間大概是0.06秒,60ms,反向時間120ms。那麼如果我們這個系統想要達到50%的同步效率,也就是理論上起碼一半的時間在做主要的訓練工作,我們必須得在200ms中完成256臺機器的本地導數全相加同步。這時候,100MB看起來就很多了。

?

針對同步我們做了很多優化。比如我們做了多層次的同步。我們會在第一步先在機器本地把GPU們的資料做一次全相加。在圖裡比如左上方,就是把四張GPU卡的資料合併。第二步我們通過互相拷貝做機器間的全相加同步。第三步我們把計算出的統一資料再在機器內部分發到所有GPU上。

?

還有一個值得一提的優化。我們研究了resnet中出現的引數的大小。 這張圖是一張resnet中引數大小及其數量的圖表。橫軸是引數大小,縱軸是引數的數量。我們可以看到左半邊是小引數,右半邊是大引數。

?

我們發現大的引數和小的引數在同步的時候表現出不同的性質。小引數我們稱為latency bound, 延遲限制的引數。這類引數的同步過程中,同步的時間很短,主要的時間在等待別的機器的運算結果。針對這類引數,我們實現了樹形的引數同步演算法,能夠最快地同步這些引數。大的引數通常是bandwidth bound,頻寬限制的引數。這類引數的同步時間很大。我們針對這類引數實現了環狀的同步演算法。儘可能地減少同步次數並儘早開始同步過程,更充分利用頻寬。

在這項工作中我們還做了很多別的如資料讀入,GPU通訊的優化。我們也開源了我們的分散式訓練通訊框架Gloo。由於時間的原因,在這裡我們不能更多展開了。有興趣的朋友可以來參考我們的論文。

今天的演講講了很多,總結一下。

Caffe2是一個工業級的高拓展性高效能的神經網路框架。在CPU端,我們呼叫我們開發的高效能CPU庫NNPACK。在移動端,我們有包括iOS Metal,OpenGL等一套底層實現。在分散式訓練端,我們可以載入分散式通訊庫Gloo並完成大規模分散式訓練。另外,Caffe2完全開源,大家可以新增自己想要的更快的訂製底層實現。

?

在開發Caffe2的過程中,我們經常被問到這個問題:你們和原來的Caffe有什麼區別?總結下來有以下這些區別。

?

1.Caffe2有更好的規模拓展性。今天的演講裡也給大家加少了很多大規模訓練的例子,比如翻譯,比如imagenet-1k in an hour。這些大規模訓練的例子都已經在Facebook級別的資料量和系統上經過了實戰檢驗。

2.Caffe2對手機端移動部署神經網路有一整套支援。比如今天我們提到的手機端實時風格變換。這是原來的Caffe做不到的

3.是模組化。Caffe2是一個高模組化的神經網路框架。我今天也展示了我們和Gloo,和NNPACK,和Metal等一系列其他程式碼/業務邏輯的整合樣例。Caffe2可以更好的融入到業務邏輯中去。

總而言之,Caffe2是一個跨平臺的新型工業級神經網路框架。我們在移動端,伺服器端,物聯網裝置,嵌入式系統都能部署Caffe2訓練的模型。希望在不久的將來,Caffe2可以幫助大家在各種各樣的裝置上部署新的人工智慧演算法。

0?wx_fmt=png

相關推薦

開源神經網路框架Caffe2介紹

本文作者吳逸鳴,整理自作者在GTC China 2017大會上的演講,首發於作者的知乎文章。 我個人認為這是一份很值得分享的資料,因為 這應該是第一次使用全中文來講解Caffe2和FB的AI應用的演講 觀看這次演講不需要機器學習/神經網路,甚至電腦科學的基礎。它適合每一個願意瞭解人工智慧、神

神經網路框架-Pytorch使用介紹

Pytorch上手使用 近期學習了另一個深度學習框架庫Pytorch,對學習進行一些總結,方便自己回顧。 Pytorch是torch的python版本,是由Facebook開源的神經網路框架。與Tensorflow的靜態計算圖不同,pytorch的計算圖

神經網路框架

一、啟用函式   線性操作分類能力不強,而非線性表達可以分開資料。   神經網路中隱層就是增加了啟用函式,使得神經網路表達出更強大的效果。   Sigmoid可作為啟用函式,但容易引起梯度消失(導數趨近於0)。   max(0,x)就是ReLU啟用函式,可以解決梯度消失問題,導數簡單,已經常用

神經網路語音合成模型介紹

最近一段時間主要做語音合成相關專案,學習了幾種端到端神經網路語音合成模型,在這裡做一個簡要介紹。主要內容如下: -語音合成簡介 -線性譜與梅爾譜 - Tacotron - Deepvoice 3 - Tacotron 2 - Wavenet - Parallel Wave

FINN(一)簡介一種快速,可擴充套件的二值化神經網路框架

摘要: 研究表明,卷積神經網路具有明顯的冗餘,即使權重和啟用從浮點減少到二進位制值,也可以獲得高分類精度。在本文中,我們介紹了FINN,一個使用靈活的異構流體系結構構建快速和靈活的FPGA加速器的框架。通過利用一組新的優化功能,可以實現二值化神經網路到硬體的高效

神經網路中的連線與非連線

1、全連線神經網路解析:對n-1層和n層而言,n-1層的任意一個節點,都和第n層所有節點有連線。即第n層的每個節點在進行計算的時候,啟用函式的輸入是n-1層所有節點的加權。 2、全連線的神經網路示意圖: 3、“全連線”是一種不錯的模式,但是網路很大的時候,訓練速度回很慢。部分連線就是認為的

深度神經網路簡述與Capsule介紹

    本人最近初學Hinton大神的論文《Dynamic Routing Between Capsules 》,對深度神經網路的內容進行了簡要總結,將觀看“從傳統神經網路的角度解讀Capsule”視訊的內容做了筆記。感謝網路資源,讓我學習到很多知識。以後會有更新。 作者: 嫩芽33出處: http://ww

Torch7下搭建卷積神經網路框架

之前的博文,如一文讀懂卷積神經網路(CNN)、多層網路與反向傳播演算法詳解、感知機詳解、卷積神經網路詳解等已經比較詳細的講述了神經網路以及卷積神經網路的知識。本篇博文主要講述在Torch7中神經網路如何建立以及相關的原理(即神經網路包NN的內容),雖然講述的是神經網路的建

神經網路當前發展分支介紹

前言:自己要開始學習神經網路,當然要先搞明白神經網路發展過程中出現的分支有哪些,這些分支經過理論上的論證,實際上的操作,不斷的完善後發展成現如今的哪些神經網路,以及各自的用處在哪些領域。 –—-—-—-—-—-—-—-—-—-—-—-—–—-—-—-—-—-—

脈衝神經網路框架之bindsnet

當前脈衝神經網路的框架其實比較多,我之前用過PyNN+Nest,也用過下曼大的SpiNNaker,因為研究嘛,經常要修改學習演算法一些比較底層的東西,框架用起來實在是太麻煩,有時想改部分東西,發現別人都封裝好,不好改,所以就走上自己寫程式碼的不歸路。 一路走來,最大問題不是寫不出程式

分散式神經網路框架 CaffeOnSpark在AWS上的部署過程

一、介紹 Caffe 是一個高效的神經網路計算框架,可以充分利用系統的GPU資源進行平行計算,是一個強大的工具,在影象識別、語音識別、行為分類等不同領域都得到了廣泛應用。有關Caffe的更多內容請參考專案主頁: 不過Caffe的常用部署方式是單機的,這就意味

贈送 HttpClient 和HttpURLConnection 的輕型網路框架 ---》使用介紹

之前看網上的一些網路框架,多少存在一些bug,大多還沒有原始碼,有些有原始碼,框架過於太大,發現了bug修改起來也實在費事,所以使用自己的網路框架是最佳選擇哦,這個框架我這裡有借鑑一些其他框架的地方,不過提供功能就是   post  請求網路。 Android使用 Ht

卷積神經網路(CNN)中連線層(FC layer)的作用

前言 一般來說,卷積神經網路會有三種類型的隱藏層——卷積層、池化層、全連線層。卷積層和池化層比較好理解,主要很多教程也會解釋。 卷積層(Convolutional layer)主要是用一個取樣器從輸入資料中採集關鍵資料內容; 池化層(Pooling lay

長短期記憶神經網路(LSTM)介紹以及簡單應用分析

本文分為四個部分,第一部分簡要介紹LSTM的應用現狀;第二部分介紹LSTM的發展歷史,並引出了受眾多學者關注的LSTM變體——門控遞迴單元(GRU);第三部分介紹LSTM的基本結構,由基本迴圈神經網路結構引出LSTM的具體結構。第四部分,應用Keras框架提供的API,比較和分析簡單迴

用TensorFlow搭建一個萬能的神經網路框架(持續更新)

部落格作者:凌逆戰 部落格地址:https://www.cnblogs.com/LXP-Never/p/12774058.html 文章程式碼:https://github.com/LXP-Never/blog_data/tree/master/tensorflow_model   我一直覺得Ten

開源」TensorSpace.js -- 神經網路3D視覺化框架,在瀏覽器端構建可互動模型

TensorSpace是一套用於構建神經網路3D視覺化應用的框架。 開發者可以使用類 Keras 風格的 TensorSpace API,輕鬆建立視覺化網路、載入神經網路模型並在瀏覽器中基於已載入的模型進行3D可互動呈現。 TensorSpace 可以使您更直觀地觀察神經網路模型,並瞭解該模型是如何通過

《TensorFlow:實戰Google深度學習框架》——6.2 卷積神經網路簡介(卷積神經網路的基本網路結構及其與連線神經網路的差異)

下圖為全連線神經網路與卷積神經網路的結構對比圖: 由上圖來分析兩者的差異:                  全連線神經網路與卷積網路相同點   &nb

人工智慧領域常用的開源框架和庫(含機器學習/深度學習/強化學習/知識圖譜/圖神經網路

【說在前面】本人部落格新手一枚,象牙塔的老白,職業場的小白。以下內容僅為個人見解,歡迎批評指正,不喜勿噴![認真看圖][認真看圖] 【補充說明】本文主要討論人工智慧領域中常用的支援 Python 程式語言的開源框架和庫,因此全面性肯定有限! 一、機器學習常用的開源框架和庫 1. Scikit-learn 作為

開源脈衝神經網路深度學習框架——驚蟄(SpikingJelly)

開源脈衝神經網路深度學習框架——驚蟄(SpikingJelly) 背景   近年來神經形態計算晶片發展迅速,大量高校企業團隊跟進,這樣的晶片執行SNN的能效比與速度都超越了傳統的通用計算裝置。相應的,神經形態感知晶片也發展迅速。目前已有各種模態的感知晶片,其中如北京大學黃鐵軍教授團隊的Vidar相機,功能上仿

Python中從頭開始實現神經網路 - 介紹

原文出處: http://www.wildml.com/2015/09/implementing-a-neural-network-from-scratch/ Posted on September 3, 2015 by Denny Britz 這篇文章幫助我們用python實踐一下從