鍍金池/ 教程/ 人工智能/ 深度學(xué)習(xí)庫(kù)和框架
人工神經(jīng)網(wǎng)絡(luò)
深度學(xué)習(xí)
深度學(xué)習(xí)簡(jiǎn)介
深度神經(jīng)網(wǎng)絡(luò)
深度學(xué)習(xí)的應(yīng)用
計(jì)算圖
訓(xùn)練神經(jīng)網(wǎng)絡(luò)
基本原理
機(jī)器學(xué)習(xí)基礎(chǔ)
深度學(xué)習(xí)庫(kù)和框架
深度學(xué)習(xí)開(kāi)發(fā)環(huán)境

深度學(xué)習(xí)庫(kù)和框架

在本章中,我們將深度學(xué)習(xí)與不同的圖書(shū)館和框架聯(lián)系起來(lái)。

使用Theano的深度學(xué)習(xí)

如果想開(kāi)始編碼一個(gè)深度神經(jīng)網(wǎng)絡(luò),最好有一個(gè)想法,了解不同的框架,如:Theano,TensorFlow,Keras,PyTorch等是如何工作的。

Theano是一個(gè)python庫(kù),它提供了一套用于構(gòu)建在我們的機(jī)器上快速訓(xùn)練的深層網(wǎng)絡(luò)的功能。

Theano由加拿大蒙特利爾大學(xué)在Yoshua Bengio領(lǐng)導(dǎo)下發(fā)展成為一位深度網(wǎng)絡(luò)的先鋒。

Theano可定義和評(píng)估數(shù)學(xué)表達(dá)式,其中矩陣是矩形數(shù)組。

從技術(shù)上講,神經(jīng)網(wǎng)絡(luò)和輸入數(shù)據(jù)都可以表示為矩陣,所有標(biāo)準(zhǔn)網(wǎng)絡(luò)操作都可以重新定義為矩陣運(yùn)算。 這很重要,因?yàn)殡娔X可以非??焖俚貓?zhí)行矩陣操作。

我們可以并行處理多個(gè)矩陣值,如果我們用這個(gè)底層結(jié)構(gòu)構(gòu)建一個(gè)神經(jīng)網(wǎng)絡(luò),可以使用一臺(tái)帶有GPU的機(jī)器在合理的時(shí)間窗口內(nèi)訓(xùn)練巨大的網(wǎng)絡(luò)。

但是,如果使用Theano,必須從頭開(kāi)始建立深層網(wǎng)絡(luò)。 該庫(kù)不提供用于創(chuàng)建特定類(lèi)型的深層網(wǎng)絡(luò)的完整功能。

相反,必須編碼深層網(wǎng)絡(luò)的每個(gè)方面,如模型,圖層,激活,訓(xùn)練方法和任何特殊的方法來(lái)停止過(guò)度擬合。

然而,好消息是Theano允許在矢量化函數(shù)的頂層實(shí)現(xiàn)構(gòu)建,為我們提供高度優(yōu)化的解決方案。

還有許多其他庫(kù)擴(kuò)展了Theano的功能。 TensorFlow和Keras可以與Theano一起用作后端。

使用TensorFlow的深度學(xué)習(xí)

谷歌TensorFlow是一個(gè)Python庫(kù)。 這個(gè)庫(kù)是構(gòu)建商業(yè)級(jí)深度學(xué)習(xí)應(yīng)用程序的絕佳選擇。

TensorFlow從另一個(gè)庫(kù):DistBelief V2誕生,它是Google Brain Project的一部分。 該庫(kù)旨在擴(kuò)展機(jī)器學(xué)習(xí)的可移植性,使研究模型可以應(yīng)用于商業(yè)級(jí)應(yīng)用。

與Theano庫(kù)非常相似,TensorFlow基于計(jì)算圖,其中節(jié)點(diǎn)表示持久數(shù)據(jù)或數(shù)學(xué)運(yùn)算,邊表示節(jié)點(diǎn)之間的數(shù)據(jù)流,即多維數(shù)組或張量; 因此得名TensorFlow

一個(gè)操作或一組操作的輸出作為輸入被饋送到下一個(gè)。

盡管TensorFlow是為神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)的,但對(duì)于可以將計(jì)算模型化為數(shù)據(jù)流圖的其他網(wǎng)絡(luò)來(lái)說(shuō),它非常適用。

TensorFlow還使用了Theano的幾個(gè)特性,如常見(jiàn)和子表達(dá)式消除,自動(dòng)分化,共享和符號(hào)變量。

可以使用TensorFlow(卷積網(wǎng),自動(dòng)編碼器,RNTN,RNN,RBM,DBM/MLP等)構(gòu)建不同類(lèi)型的深網(wǎng)。

但是,在TensorFlow中不支持超參數(shù)配置。對(duì)于此功能,我們可以使用Keras。

使用Keras的深度學(xué)習(xí)

Keras是一個(gè)功能強(qiáng)大且易于使用的Python庫(kù),用于開(kāi)發(fā)和評(píng)估深度學(xué)習(xí)模型。

它具有簡(jiǎn)約的設(shè)計(jì),可以逐層建立網(wǎng)絡(luò); 訓(xùn)練它,并運(yùn)行它。

它包裝了高效的數(shù)值計(jì)算庫(kù)Theano和TensorFlow,并允許我們用幾行簡(jiǎn)短的代碼定義和訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型。

它是一個(gè)高級(jí)神經(jīng)網(wǎng)絡(luò)API,有助于廣泛使用深度學(xué)習(xí)和人工智能。 它運(yùn)行在包括TensorFlow,Theano等許多底層庫(kù)上面。 Keras碼是可移植的; 可以在Keras中使用Theano或TensorFlow作為后端而不需要對(duì)代碼進(jìn)行任何更改來(lái)實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)。