如何使用TensorFlow將增強資料擬合到模型中?
增強模型可以使用‘compile’方法進行編譯,該方法也接受驗證資料和時期數(訓練步驟數)作為引數。
閱讀更多: 什麼是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可以減少過擬合。這被認為是一種正則化形式。這有助於模型接觸資料的更多方面,從而幫助模型更好地泛化。以下是一個示例
示例
print("Train the model to fit the given data")
epochs = 15
history = model.fit(
train_ds,
validation_data=val_ds,
epochs=epochs
)程式碼來源 −https://www.tensorflow.org/tutorials/images/classification
輸出
Train the model to fit the given data Epoch 1/15 92/92 [==============================] - 104s 1s/step - loss: 1.5371 - accuracy: 0.3103 - val_loss: 1.1487 - val_accuracy: 0.5313 Epoch 2/15 92/92 [==============================] - 102s 1s/step - loss: 1.1414 - accuracy: 0.5087 - val_loss: 1.3204 - val_accuracy: 0.5286 Epoch 3/15 92/92 [==============================] - 102s 1s/step - loss: 1.0260 - accuracy: 0.5991 - val_loss: 0.9823 - val_accuracy: 0.6281 Epoch 4/15 92/92 [==============================] - 103s 1s/step - loss: 0.9431 - accuracy: 0.6466 - val_loss: 0.9937 - val_accuracy: 0.6417 Epoch 5/15 92/92 [==============================] - 104s 1s/step - loss: 0.8294 - accuracy: 0.6706 - val_loss: 0.8365 - val_accuracy: 0.6866 Epoch 6/15 92/92 [==============================] - 103s 1s/step - loss: 0.7584 - accuracy: 0.7101 - val_loss: 0.8471 - val_accuracy: 0.6717 Epoch 7/15 92/92 [==============================] - 102s 1s/step - loss: 0.7323 - accuracy: 0.7225 - val_loss: 0.7949 - val_accuracy: 0.6853 Epoch 8/15 92/92 [==============================] - 104s 1s/step - loss: 0.7197 - accuracy: 0.7168 - val_loss: 0.8422 - val_accuracy: 0.6839 Epoch 9/15 92/92 [==============================] - 103s 1s/step - loss: 0.7209 - accuracy: 0.7229 - val_loss: 0.7502 - val_accuracy: 0.7193 Epoch 10/15 92/92 [==============================] - 104s 1s/step - loss: 0.6334 - accuracy: 0.7590 - val_loss: 0.8248 - val_accuracy: 0.7016 Epoch 11/15 92/92 [==============================] - 104s 1s/step - loss: 0.6052 - accuracy: 0.7737 - val_loss: 0.7400 - val_accuracy: 0.7153 Epoch 12/15 92/92 [==============================] - 104s 1s/step - loss: 0.5713 - accuracy: 0.7831 - val_loss: 0.7424 - val_accuracy: 0.7098 Epoch 13/15 92/92 [==============================] - 105s 1s/step - loss: 0.5627 - accuracy: 0.7875 - val_loss: 0.7028 - val_accuracy: 0.7275 Epoch 14/15 92/92 [==============================] - 103s 1s/step - loss: 0.5254 - accuracy: 0.8029 - val_loss: 0.6900 - val_accuracy: 0.7371 Epoch 15/15 92/92 [==============================] - 103s 1s/step - loss: 0.5187 - accuracy: 0.7984 - val_loss: 0.7839 - val_accuracy: 0.7153
解釋
- 模型經過訓練以擬合訓練資料。
- 訓練進行了15個步驟/迭代/時期。
- 這是藉助‘fit’方法完成的。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP