![](/img/trans.png)
[英]Why is my model overfitting after doing regularization and batchnormalization
[英]Why is my model overfitting on the second epoch?
我是深度學習的初學者,我正在嘗試訓練深度學習 model 以使用 Mobilenet_v2 和 Inception 對不同的 ASL 手勢進行分類。
這是我的代碼創建一個 ImageDataGenerator 來創建訓練和驗證集。
# Reformat Images and Create Batches
IMAGE_RES = 224
BATCH_SIZE = 32
datagen = tf.keras.preprocessing.image.ImageDataGenerator(
rescale=1./255,
validation_split = 0.4
)
train_generator = datagen.flow_from_directory(
base_dir,
target_size = (IMAGE_RES,IMAGE_RES),
batch_size = BATCH_SIZE,
subset = 'training'
)
val_generator = datagen.flow_from_directory(
base_dir,
target_size= (IMAGE_RES, IMAGE_RES),
batch_size = BATCH_SIZE,
subset = 'validation'
)
以下是訓練模型的代碼:
# Do transfer learning with Tensorflow Hub
URL = "https://tfhub.dev/google/tf2-preview/mobilenet_v2/feature_vector/4"
feature_extractor = hub.KerasLayer(URL,
input_shape=(IMAGE_RES, IMAGE_RES, 3))
# Freeze pre-trained model
feature_extractor.trainable = False
# Attach a classification head
model = tf.keras.Sequential([
feature_extractor,
layers.Dense(5, activation='softmax')
])
model.summary()
# Train the model
model.compile(
optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])
EPOCHS = 5
history = model.fit(train_generator,
steps_per_epoch=len(train_generator),
epochs=EPOCHS,
validation_data = val_generator,
validation_steps=len(val_generator)
)
紀元 1/5 94/94 [===============================] - 19 秒 199 毫秒/步 - 損失:0.7333 - 准確度:0.7730 - val_loss:0.6276 - val_accuracy:0.7705
紀元 2/5 94/94 [===============================] - 18 秒 190 毫秒/步 - 損失:0.1574 - 准確度:0.9893 - val_loss:0.5118 - val_accuracy:0.8145
紀元 3/5 94/94 [===============================] - 18 秒 191 毫秒/步 - 損失:0.0783 - 准確度:0.9980 - val_loss:0.4850 - val_accuracy:0.8235
紀元 4/5 94/94 [===============================] - 18 秒 196 毫秒/步 - 損失:0.0492 - 准確度:0.9997 - val_loss:0.4541 - val_accuracy:0.8395
紀元 5/5 94/94 [===============================] - 18 秒 193 毫秒/步 - 損失:0.0349 - 准確度:0.9997 - val_loss:0.4590 - val_accuracy:0.8365
我試過使用數據增強,但 model 仍然過擬合,所以我想知道我的代碼是否做錯了什么。
您的數據非常小。 嘗試用隨機種子分裂並檢查問題是否仍然存在。
如果是,則使用正則化並降低神經網絡的復雜性。
還可以嘗試不同的優化器和更小的學習率(嘗試 lr 調度器)
看起來您的數據集非常小,一些真正的輸出僅由輸入輸出曲線中的一小段輸入分隔。 這就是為什么它很容易適應這些點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.