CNN для мультиметочной классификации изображений - PullRequest
0 голосов
/ 25 октября 2019

Я бы разработал CNN, который классифицирует блоки изображения 8x8. В частности, у меня num_classes равно 40, и каждое изображение может быть связано либо с одним классом, либо с двумя классами, либо с тремя классами, либо с четырьмя классами и т. Д., И даже со всеми 40 классами.

Мой вопроссвязан с функцией потерь и метрикой: действительно, я хочу навязать, что мой CNN возвращает K наиболее уверенных классов, и если хотя бы один из них является корректным, то я хочу, чтобы точность увеличилась

. Например, предположим, что в простом случае num_classes=4 и K=2:

    true = [1 0 0 0]; predicted = [1 0 1 0] OK
    true = [1 1 0 0]; predicted = [0 0 1 1] WRONG

Итак, я уже протестировал следующую строку кода, но это не то, что я хочу.

    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

Какие loss и metric я должен использовать? Или, может быть, имеет больше смысла, если я напишу свою собственную метрическую функцию?

1 Ответ

0 голосов
/ 25 октября 2019

Ты compile кажется в порядке. Для Multilabel сетей вы также должны использовать sigmoid activation и , а не softmax до вашего последнего dense layer (не знаю, что вы используете)

x = Dense(40, activation='sigmoid')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...