如何在TensorFlow中使用dropout來減少過擬合?


TensorFlow可以使用dropout技術來減少過擬合,該技術建立一個包含重縮放層和增強資料的順序模型。

閱讀更多: 什麼是TensorFlow以及Keras如何與TensorFlow一起建立神經網路?

我們將使用Keras Sequential API,它有助於構建順序模型,用於處理簡單的層堆疊,其中每一層只有一個輸入張量和一個輸出張量。

包含至少一層卷積層的神經網路被稱為卷積神經網路。我們可以使用卷積神經網路來構建學習模型。

使用keras.Sequential模型建立一個影像分類器,並使用preprocessing.image_dataset_from_directory載入資料。資料可以有效地從磁碟載入。識別過擬合併應用技術來緩解它。這些技術包括資料增強和dropout。共有3700張花卉圖片。該資料集包含5個子目錄,每個子目錄對應一個類別。

分別是雛菊、蒲公英、玫瑰、向日葵和鬱金香。

我們使用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("The dropout technique to reduce overfitting")
model = Sequential([
   data_augmentation,
   layers.experimental.preprocessing.Rescaling(1./255),
   layers.Conv2D(16, 3, padding='same', activation='relu'),
   layers.MaxPooling2D(),
   layers.Conv2D(32, 3, padding='same', activation='relu'),
   layers.MaxPooling2D(),
   layers.Conv2D(64, 3, padding='same', activation='relu'),
   layers.MaxPooling2D(),
   layers.Dropout(0.2),
   layers.Flatten(),
   layers.Dense(128, activation='relu'),
   layers.Dense(num_classes)
])

程式碼來源 −https://www.tensorflow.org/tutorials/images/classification

輸出

The dropout technique to reduce overfitting

解釋

  • 使用layers.Dropout建立神經網路。
  • 建立具有三層的順序模型。
  • 下一步是使用增強影像訓練此資料集。

更新於:2021年2月22日

瀏覽量:199

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.