深度學習庫和框架

在本章中,我們將深度學習與不同的圖書館和框架聯繫起來。

使用Theano的深度學習

如果想開始編碼一個深度神經網絡,最好有一個想法,瞭解不同的框架,如:Theano,TensorFlow,Keras,PyTorch等是如何工作的。

Theano是一個python庫,它提供了一套用於構建在我們的機器上快速訓練的深層網絡的功能。

Theano由加拿大蒙特利爾大學在Yoshua Bengio領導下發展成爲一位深度網絡的先鋒。

Theano可定義和評估數學表達式,其中矩陣是矩形數組。

從技術上講,神經網絡和輸入數據都可以表示爲矩陣,所有標準網絡操作都可以重新定義爲矩陣運算。 這很重要,因爲電腦可以非常快速地執行矩陣操作。

我們可以並行處理多個矩陣值,如果我們用這個底層結構構建一個神經網絡,可以使用一臺帶有GPU的機器在合理的時間窗口內訓練巨大的網絡。

但是,如果使用Theano,必須從頭開始建立深層網絡。 該庫不提供用於創建特定類型的深層網絡的完整功能。

相反,必須編碼深層網絡的每個方面,如模型,圖層,激活,訓練方法和任何特殊的方法來停止過度擬合。

然而,好消息是Theano允許在矢量化函數的頂層實現構建,爲我們提供高度優化的解決方案。

還有許多其他庫擴展了Theano的功能。 TensorFlow和Keras可以與Theano一起用作後端。

使用TensorFlow的深度學習

谷歌TensorFlow是一個Python庫。 這個庫是構建商業級深度學習應用程序的絕佳選擇。

TensorFlow從另一個庫:DistBelief V2誕生,它是Google Brain Project的一部分。 該庫旨在擴展機器學習的可移植性,使研究模型可以應用於商業級應用。

與Theano庫非常相似,TensorFlow基於計算圖,其中節點表示持久數據或數學運算,邊表示節點之間的數據流,即多維數組或張量; 因此得名TensorFlow

一個操作或一組操作的輸出作爲輸入被饋送到下一個。

儘管TensorFlow是爲神經網絡設計的,但對於可以將計算模型化爲數據流圖的其他網絡來說,它非常適用。

TensorFlow還使用了Theano的幾個特性,如常見和子表達式消除,自動分化,共享和符號變量。

可以使用TensorFlow(卷積網,自動編碼器,RNTN,RNN,RBM,DBM/MLP等)構建不同類型的深網。

但是,在TensorFlow中不支持超參數配置。對於此功能,我們可以使用Keras。

使用Keras的深度學習

Keras是一個功能強大且易於使用的Python庫,用於開發和評估深度學習模型。

它具有簡約的設計,可以逐層建立網絡; 訓練它,並運行它。

它包裝了高效的數值計算庫Theano和TensorFlow,並允許我們用幾行簡短的代碼定義和訓練神經網絡模型。

它是一個高級神經網絡API,有助於廣泛使用深度學習和人工智能。 它運行在包括TensorFlow,Theano等許多底層庫上面。 Keras碼是可移植的; 可以在Keras中使用Theano或TensorFlow作爲後端而不需要對代碼進行任何更改來實現神經網絡。