Кера val_acc 99,9%, но прогнозы плохие для классификации нескольких меток - PullRequest
1 голос
/ 14 мая 2019

Обновлено, чтобы включить больше информации и контекста.

Я уже видел другие вопросы, подобные этому, но решения, похоже, не помогают мне.У меня есть ~ 1000 меток букв шрифта, и я использую сигмовидную активацию, чтобы вернуть вероятности каждой метки, что это определенный шрифт.Шрифты в оттенках серого, и каждый класс имеет около 60 изображений различного размера на белом фоне.

Я использую обратные вызовы для предотвращения переобучения, он работает в течение 3 эпох и быстро достигает 99,99% val_acc и соотв.с 3 эпохами результаты выглядят так в первой эпохе (500 шагов):

24576/44371 [===============>..............] - ETA: 4480s - loss: 0.0185 - acc: 0.9982]

И в конце после 3 эпох:

44370/44370 [==============================] - 9634s - loss: 0.0177 - acc: 0.9989 - val_loss: 0.0177 - val_acc: 0.9989

Модельные предсказаниясгенерированная модель не где близко, самая близкая - 10% совпадение буквы шрифта, которая выглядит совершенно иначе.Что-то не так, может кто-нибудь помочь мне здесь?Вот код модели:

model = models.Sequential()
model.add(Conv2D(32, (3, 3), input_shape=(150,150,1), activation='relu'))
BatchNormalization(axis=1)
model.add(Flatten())
model.add(Dense(1000, activation='sigmoid'))
model.compile(loss='binary_crossentropy', #categorical_crossentropy
optimizer='adam',
metrics=['accuracy'])

Мои параметры конфигурации:

  • 500 шагов обучения (также пробовал 2000)
  • 0,0005 скорость обучения (также пробовал 0,1)
  • размер партии 32
  • эпох между 5 и 20 Я пытался, но выходил рано в 2, чтобы прекратить переоснащение (терпение 2)

Есть ли у кого-нибудь какие-либо предложения

1 Ответ

1 голос
/ 14 мая 2019

~ 1000 меток букв шрифта [...] каждый класс имеет около 60 изображений

так у вас есть только 60 изображений в классе?

Некоторые моменты приходят на ум: если вы используете ImageDataGenerator, вы можете увеличить объем ввода путем поворота, сдвига, масштабирования и т. Д. Это увеличивает диапазон ввода для сети. И вы можете выделить validation_split, чтобы не тренироваться, чтобы использовать его только при проверке.

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