如何使用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’方法用於獲取模型的完整架構。

更新於: 2021年2月22日

115 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.