在本章中,我們將把深入學習與不同的庫和框架聯繫起來。
Deep learning and Theano
如果我們想開始編碼一個深層神經網絡,最好我們有一個不同的框架,比如Theano、TensorFlow、Keras、PyTorch等,是如何工作的。
Theano是python庫,它提供了一組函數,用於構建在我們的機器上快速訓練的深層網絡。
Theano是在加拿大蒙特婁大學(University of Montreal)由一位深度網絡先驅Yoshua Bengio領導下開發的。
它允許我們定義和計算帶有向量和矩陣的數學表達式,這些向量和矩陣是數字的矩形陣列。
從技術上講,神經網絡和輸入數據都可以表示爲矩陣,所有標準的網絡操作都可以重新定義爲矩陣操作。這一點很重要,因爲計算機可以很快地執行矩陣運算。
我們可以並行處理多個矩陣值,如果我們用這種底層結構構建一個神經網絡,我們就可以用一台帶有GPU的機器在一個合理的時間窗內訓練龐大的網絡。
然而,如果我們使用天網,我們必須從頭開始建立深網。庫沒有提供創建特定類型的deep net的完整功能。
相反,我們必須對深網的各個方面進行編碼,比如模型、層、激活、訓練方法和任何防止過度擬合的特殊方法。
不過,好消息是,Theano允許在矢量化函數之上構建我們的實現,從而爲我們提供一個高度優化的解決方案。
還有許多其他庫擴展了ano的功能。TensorFlow和Keras可以與ano一起用作後端。
Deep Learning with TensorFlow
Googles TensorFlow是一個python庫。該圖書館是建設商業級深度學習應用的絕佳選擇。
TensorFlow源於另一個圖書館DistFeedge V2,它是Google Brain項目的一部分。該庫旨在擴展機器學習的可移植性,以便研究模型可以應用於商業級應用。
與Theano庫非常相似,tensor flow是基於計算圖的,其中一個節點表示持久數據或數學運算,而邊表示節點之間的數據流,這是一個多維數組或tensor;因此,TensorFlow的名稱是
一個操作或一組操作的輸出作爲下一個操作的輸入。
儘管TensorFlow是爲神經網絡設計的,但它也適用於其他可以將計算建模爲數據流圖的網絡。
TensorFlow還使用了一些來自Theano的特性,如公共和子表達式消除、自微分、共享和符號變量。
利用卷積網、自動編碼器、RNTN、RNN、RBM、DBM/MLP等張量流可以構造不同類型的深網。
但是,TensorFlow中不支持超參數配置。對於此功能,我們可以使用Keras。
Deep Learning and Keras
Keras是一個強大的易於使用的Python庫,用於開發和評估深度學習模型。
它有一個極簡的設計,允許我們建立一個網絡一層一層,訓練它,並運行它。
它封裝了高效的數值計算庫Theano和TensorFlow,允許我們用幾行代碼定義和訓練神經網絡模型。
它是一個高級的神經網絡API,有助於深度學習和人工智慧的廣泛應用。它運行在許多較低級別的庫之上,包括TensorFlow、Theano等。Keras代碼是可移植的;我們可以在Keras中實現一個神經網絡,使用ano或TensorFlow作爲後端,代碼沒有任何變化。