深度學習庫和框架


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

使用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作為後端而不需要對程式碼進行任何更改來實現神經網路。