在本章中,我們將深度學習與不同的圖書館和框架聯(lián)系起來。
如果想開始編碼一個深度神經(jīng)網(wǎng)絡(luò),最好有一個想法,了解不同的框架,如:Theano,TensorFlow,Keras,PyTorch等是如何工作的。
Theano是一個python庫,它提供了一套用于構(gòu)建在我們的機器上快速訓練的深層網(wǎng)絡(luò)的功能。
Theano由加拿大蒙特利爾大學在Yoshua Bengio領(lǐng)導下發(fā)展成為一位深度網(wǎng)絡(luò)的先鋒。
Theano可定義和評估數(shù)學表達式,其中矩陣是矩形數(shù)組。
從技術(shù)上講,神經(jīng)網(wǎng)絡(luò)和輸入數(shù)據(jù)都可以表示為矩陣,所有標準網(wǎng)絡(luò)操作都可以重新定義為矩陣運算。 這很重要,因為電腦可以非??焖俚貓?zhí)行矩陣操作。
我們可以并行處理多個矩陣值,如果我們用這個底層結(jié)構(gòu)構(gòu)建一個神經(jīng)網(wǎng)絡(luò),可以使用一臺帶有GPU的機器在合理的時間窗口內(nèi)訓練巨大的網(wǎng)絡(luò)。
但是,如果使用Theano,必須從頭開始建立深層網(wǎng)絡(luò)。 該庫不提供用于創(chuàng)建特定類型的深層網(wǎng)絡(luò)的完整功能。
相反,必須編碼深層網(wǎng)絡(luò)的每個方面,如模型,圖層,激活,訓練方法和任何特殊的方法來停止過度擬合。
然而,好消息是Theano允許在矢量化函數(shù)的頂層實現(xiàn)構(gòu)建,為我們提供高度優(yōu)化的解決方案。
還有許多其他庫擴展了Theano的功能。 TensorFlow和Keras可以與Theano一起用作后端。
谷歌TensorFlow是一個Python庫。 這個庫是構(gòu)建商業(yè)級深度學習應(yīng)用程序的絕佳選擇。
TensorFlow從另一個庫:DistBelief V2誕生,它是Google Brain Project的一部分。 該庫旨在擴展機器學習的可移植性,使研究模型可以應(yīng)用于商業(yè)級應(yīng)用。
與Theano庫非常相似,TensorFlow基于計算圖,其中節(jié)點表示持久數(shù)據(jù)或數(shù)學運算,邊表示節(jié)點之間的數(shù)據(jù)流,即多維數(shù)組或張量; 因此得名TensorFlow
一個操作或一組操作的輸出作為輸入被饋送到下一個。
盡管TensorFlow是為神經(jīng)網(wǎng)絡(luò)設(shè)計的,但對于可以將計算模型化為數(shù)據(jù)流圖的其他網(wǎng)絡(luò)來說,它非常適用。
TensorFlow還使用了Theano的幾個特性,如常見和子表達式消除,自動分化,共享和符號變量。
可以使用TensorFlow(卷積網(wǎng),自動編碼器,RNTN,RNN,RBM,DBM/MLP等)構(gòu)建不同類型的深網(wǎng)。
但是,在TensorFlow中不支持超參數(shù)配置。對于此功能,我們可以使用Keras。
Keras是一個功能強大且易于使用的Python庫,用于開發(fā)和評估深度學習模型。
它具有簡約的設(shè)計,可以逐層建立網(wǎng)絡(luò); 訓練它,并運行它。
它包裝了高效的數(shù)值計算庫Theano和TensorFlow,并允許我們用幾行簡短的代碼定義和訓練神經(jīng)網(wǎng)絡(luò)模型。
它是一個高級神經(jīng)網(wǎng)絡(luò)API,有助于廣泛使用深度學習和人工智能。 它運行在包括TensorFlow,Theano等許多底層庫上面。 Keras碼是可移植的; 可以在Keras中使用Theano或TensorFlow作為后端而不需要對代碼進行任何更改來實現(xiàn)神經(jīng)網(wǎng)絡(luò)。