Как получить хорошую бинарную классификацию глубоко нейронной модели, где отрицательные данные больше относятся к набору данных - PullRequest
0 голосов
/ 12 февраля 2019

Я хотел сделать бинарную классификацию изображений с использованием набора данных Cifar-10.Где я модифицировал Cifar-10 таким образом, что class-0 как class-True (1) и все другие классы как class-False (0).Теперь в моем наборе данных есть только два класса - True (1) и False (0).

, в то время как я тренируюсь, используя следующую модель Keras (Tensorflow в качестве бэкэнда), я получаю точность почти 99%.Но в ходе теста я обнаружил, что все Ложь предсказывается как Ложь, а все Истина также предсказывается как Ложь - и получаю точность 99%.

Но я не хотел, чтобы все Истина предсказывались как Ложь.

Я ожидал, что все True предсказаны как True.

Как мне решить эту проблему?

model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(Conv2D(32, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(2, activation='softmax'))

model.compile(loss='sparse_categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])

output=model.fit(x_train, y_train, batch_size=32, epochs=10)

1 Ответ

0 голосов
/ 12 февраля 2019

У вас есть несколько вариантов здесь:

  1. Получить больше данных с меткой True.Однако в большинстве случаев это сделать нелегко.
  2. Использовать только небольшой объем данных, помеченных False.Может быть, этого достаточно для тренировки вашей модели?
  3. Используйте веса для функции потери во время тренировки.В Kerasy вы можете сделать это, используя class_weight параметр из fit.Класс True должен иметь больший вес, чем класс False в вашем примере.

Как уже упоминалось в комментариях, это огромная проблема в области ML.Это всего лишь несколько очень простых вещей, которые вы можете попробовать.

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