簡體   English   中英

為什么我的 model 在第二個時期過擬合?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM