Neural net имеет высокую точность, но все прогнозы неверны - PullRequest
0 голосов
/ 26 апреля 2020

Цель этой нейронной net - классифицировать изображения по 7 категориям. Вот код:

model = Sequential()
model.add(Conv2D(60, kernel_size=(3, 3), activation='relu', input_shape=(225,225,3)))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Flatten())

model.add(Dense(128, activation='relu'))
model.add(Dense(7, activation='softmax'))

model.compile(optimizer="rmsprop", loss="binary_crossentropy", metrics=["accuracy"])


h = model.fit(train_generator, epochs=4, steps_per_epoch=28, validation_data=validation_generator, validation_steps=11)

Точность якобы действительно хорошая. Точность теста также составляет около 77%

   Epoch 1/4
    28/28 [==============================] - 91s 3s/step - loss: 3.4790 - accuracy: 0.7696 - val_loss: 2.6292 - val_accuracy: 0.7720
    Epoch 2/4
    28/28 [==============================] - 87s 3s/step - loss: 3.5448 - accuracy: 0.7696 - val_loss: 3.9438 - val_accuracy: 0.7698
    Epoch 3/4
    28/28 [==============================] - 76s 3s/step - loss: 3.5431 - accuracy: 0.7696 - val_loss: 3.5056 - val_accuracy: 0.7698
    Epoch 4/4
    28/28 [==============================] - 76s 3s/step - loss: 3.5415 - accuracy: 0.7696 - val_loss: 3.0674 - val_accuracy: 0.7857

Этот код используется для прогнозирования

prediction = model.predict(test_generator)

print(prediction)

Однако выходной результат имеется только в одном классе.

[[0. 0. 0. 0. 1. 0. 0.]
 [0. 0. 0. 0. 1. 0. 0.]
 [0. 0. 0. 0. 1. 0. 0.]
 ....
 [0. 0. 0. 0. 1. 0. 0.]
 [0. 0. 0. 0. 1. 0. 0.]]

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

1 Ответ

1 голос
/ 26 апреля 2020

Измените binary_crossentropy на categorical_crossentropy (или sparse_categorical_crossentropy, если ваши цели не имеют горячего кодирования).

Как вы можете догадаться, binary_crossentropy используется только тогда, когда есть две категории.

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

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