庫和框架



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

深度學習和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程式碼是可移植的;我們可以使用Theano或TensorFlow作為後端在Keras中實現神經網路,而無需更改任何程式碼。

廣告

© . All rights reserved.