如何使用Tensorflow訓練和編譯增強模型?
增強模型可以使用'compile'方法進行編譯,該方法也採用'SparseCategoricalCrossentropy'作為引數來計算與訓練相關的損失。
閱讀更多: 什麼是TensorFlow以及Keras如何與TensorFlow一起建立神經網路?
我們將使用Keras Sequential API,它有助於構建一個用於處理層堆疊的順序模型,其中每一層都只有一個輸入張量和一個輸出張量。
包含至少一層卷積層的神經網路稱為卷積神經網路。我們可以使用卷積神經網路構建學習模型。
我們正在使用Google Colaboratory來執行以下程式碼。Google Colab或Colaboratory幫助在瀏覽器上執行Python程式碼,無需任何配置,並且可以免費訪問GPU(圖形處理單元)。Colaboratory構建在Jupyter Notebook之上。
由於過擬合,模型將無法在新資料集上很好地泛化。有很多方法可以避免過擬合。我們可以使用dropout技術來克服過擬合。透過在網路中引入dropout可以減少過擬合。這被認為是一種正則化形式。這有助於模型接觸到更多的資料方面,從而幫助模型更好地泛化。
當dropout應用於某一層時,在訓練過程中會隨機丟棄該層的一些輸出單元。這是透過將啟用函式設定為0來實現的。dropout技術採用分數作為輸入值(如0.1、0.2、0.4等)。這個數字0.1或0.2基本上表示從應用層隨機丟棄10%或20%的輸出單元。
資料增強透過使用隨機變換來增強現有示例,從而從現有示例生成額外的訓練資料,這些隨機變換將產生看起來可信的影像。以下是一個示例
示例
print("Compiling the model")
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
print("The complete architecture of the model")
model.summary()程式碼來源 -https://www.tensorflow.org/tutorials/images/classification
輸出
Compiling the model The complete architecture of the model Model: "sequential_2" Layer (type) Output Shape Param # ================================================================= sequential_1 (Sequential) (None, 180, 180, 3) 0 _________________________________________________________________ rescaling_2 (Rescaling) (None, 180, 180, 3) 0 _________________________________________________________________ conv2d_3 (Conv2D) (None, 180, 180, 16) 448 _________________________________________________________________ max_pooling2d_3 (MaxPooling2 (None, 90, 90, 16) 0 _________________________________________________________________ conv2d_4 (Conv2D) (None, 90, 90, 32) 4640 _________________________________________________________________ max_pooling2d_4 (MaxPooling2 (None, 45, 45, 32) 0 _________________________________________________________________ conv2d_5 (Conv2D) (None, 45, 45, 64) 18496 _________________________________________________________________ max_pooling2d_5 (MaxPooling2 (None, 22, 22, 64) 0 _________________________________________________________________ dropout (Dropout) (None, 22, 22, 64) 0 _________________________________________________________________ flatten_1 (Flatten) (None, 30976) 0 _________________________________________________________________ dense_2 (Dense) (None, 128) 3965056 _________________________________________________________________ dense_3 (Dense) (None, 5) 645 ================================================================= Total params: 3,989,285 Trainable params: 3,989,285 Non-trainable params: 0 _________________________________________________________________
解釋
- 模型使用'fit'方法進行編譯。
- ‘summary’方法用於獲取模型的完整架構。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP