Почему на первых порах точность валидации выше, чем точность обучения? - PullRequest
0 голосов
/ 13 июля 2020

Я работаю с классификацией видео из 5 классов и использую модель TimeDistributed CNN + RNN. Набор обучающих данных содержит 70 видео по 20 кадров в каждом классе. Набор данных проверки содержит 15 видео, по 20 кадров в каждом классе. Набор тестовых данных содержит 15 видео по 20 кадров в каждом классе. Я использовал размер пакета 64. Итак, в общей сложности я работаю с 500 видео. Я скомпилировал модель, используя оптимизатор RmsProp и категориальную потерю кросс-энтропии.

Я обучал модель за 65 эпох, но я заметил странный факт, что точность проверки становится выше, чем точность обучения в первую эпоху. в остальные эпохи кривая выглядит вполне удовлетворительно.

введите описание изображения здесь

Моя модель:

model = Sequential()

input_shape=(20, 128, 128, 3)

model.add(BatchNormalization(input_shape=(20, 128, 128, 3)))

model.add(TimeDistributed(Conv2D(32, (3, 3), strides=(1, 1),activation='relu', padding='same')))
model.add(TimeDistributed(MaxPooling2D((2, 2))))
model.add(TimeDistributed(Conv2D(64, (3, 3), strides=(1, 1),activation='relu', padding='same')))
model.add(TimeDistributed(Conv2D(128, (3, 3), strides=(1, 1),activation='relu', padding='same')))
model.add(TimeDistributed(Conv2D(128, (3, 3), strides=(1, 1),activation='relu', padding='same')))
model.add(TimeDistributed(MaxPooling2D((2, 2))))
model.add(TimeDistributed(Conv2D(256, (3, 3), strides=(1, 1),activation='relu', padding='same')))
model.add(TimeDistributed(MaxPooling2D((2, 2))))

model.add(TimeDistributed(Flatten()))

model.add(LSTM(256, activation='relu', return_sequences=False))
model.add((Dense(128,activation='relu')))

model.add(Dense(5, activation='softmax'))

Может ли кто-нибудь сказать мне, почему точность проверки становится выше, чем точность обучения в первую эпоху?

1 Ответ

0 голосов
/ 13 июля 2020

Я предполагаю, что, поскольку у вас всего 5 классов, простое угадывание одного для всех кадров даст вам точность 20%. Теперь у вас около 32%, что немного лучше.

Я обычно не смотрю на начальную точность, так как модель действительно плохая. (на самом деле удалите первые N (в данном случае может быть 20/30) эпох из графика, чтобы лучше показать производительность).

Проверьте матрицу путаницы после первой эпохи, и вы, вероятно, будете хороши только в нескольких классы.

...