Я бы разработал 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
я должен использовать? Или, может быть, имеет больше смысла, если я напишу свою собственную метрическую функцию?