Выходной слой для мульти-метки, мультиклассовой классификации?

Я ищу способ достижения нескольких классификаций для ввода. Количество выходов указано, и наборы классов могут или не могут быть одинаковыми для выходов. Образец принадлежит одному классу каждого набора классов.

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

Мое текущее предположение о том, что может сработать, состоит в том, чтобы сделать целевые данные несколькими конкатенированными однократными векторами, а выходной слой имел бы столько же единиц softmax, сколько и векторов. Я не знаю, как слои будут связаны с этим решением и как сеть будет определять размеры наборов классов. Я думаю, что лейбл powerset не будет работать для моих нужд.

Я думаю, что функция matnetb patternnet может создать сеть, которая делает это, но я не знаю, как работает итоговая сеть. Код для TensorFlow или Keras будет очень кстати.

1 ответ

Возможно, сейчас не время отвечать на этот вопрос, но я работаю над классификацией нескольких меток и только что нашел решение. Что касается Кераса, есть пример:

  • целевая метка: [1, 0, 0, 1, 0]
  • выходной слой: плотный (5, активация ='сигмоид')
  • потеря: 'двоичная_кросентропия'

Это будет хорошо работать, если набор данных достаточно большой.