Си-Эн-Эн никогда не переодевается, даже с небольшим набором данных - PullRequest
1 голос
/ 17 мая 2019

Я использую CNN для классификации изображения в небольшом наборе данных с дисбалансом. 3500 изображений, 16 классов. Я делаю:

  • Увеличение данных с помощью keras augmenteur
  • класс взвешивания

Я использую следующую модель.


model = Sequential()
model.add(Conv2D(24,kernel_size=3,padding='same',activation='relu',
        input_shape=(n,n,1)))
model.add(MaxPool2D())
model.add(Conv2D(48,kernel_size=3,padding='same',activation='relu'))
model.add(MaxPool2D())
model.add(Conv2D(64,kernel_size=3,padding='same',activation='relu'))
model.add(MaxPool2D(padding='same'))
model.add(Conv2D(96,kernel_size=3,padding='same',activation='relu'))
model.add(MaxPool2D(padding='same'))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(16, activation='softmax'))
model.compile(optimizer="adam", loss="categorical_crossentropy",metrics=['accuracy'])   


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

Когда я запускаю модель, отзыв проверки застревает ( он никогда не уменьшается ), в то время как точность поезда продолжает улучшаться.

Правильно ли останавливать тренировочную модель, когда память прекращает расти после X эпохи? Даже если точность моего тренировочного набора все еще растет?

Второй вопрос: когда я тренирую свою модель без дополнения данных, моя модель достигает 99% точности на тренировочном наборе, а количество проверок никогда не уменьшается? Похоже, моя модель не может переодеться ... Что мне делать в этой ситуации?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...