如何在TensorFlow和Python中使用資料增強來減少過擬合?
透過新增額外的訓練資料,資料增強可以用來減少過擬合。這是透過建立一個使用“RandomFlip”層的順序模型來實現的。
閱讀更多: 什麼是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之上。
當訓練樣本數量較少時,模型會從訓練樣本中的噪聲或不需要的細節中學習。這會對模型在新樣本上的效能產生負面影響。
由於過擬合,模型將無法在新資料集上很好地泛化。有很多方法可以避免過擬合。我們將使用資料增強來克服過擬合。資料增強透過使用隨機變換來增強現有示例,從而從現有示例生成額外的訓練資料,這些隨機變換將產生看起來可信的影像。
這有助於使模型接觸到更多的資料方面,從而幫助模型更好地泛化。以下是一個示例
示例
print("Using data augmentation to eliminate overfitting") data_augmentation = keras.Sequential( [ layers.experimental.preprocessing.RandomFlip("horizontal",input_shape=(img_height, img_width,3)), layers.experimental.preprocessing.RandomRotation(0.1), layers.experimental.preprocessing.RandomZoom(0.1), ] )
程式碼來源 −https://www.tensorflow.org/tutorials/images/classification
輸出
Using data augmentation to eliminate overfitting
解釋
可以使用tf.keras.layers.experimental.preprocessing中的層實現資料增強。
這些層像其他層一樣包含在模型內部,並在GPU上執行。
這樣做是為了消除或減少過擬合。