Функция потерь для классификации, когда более одного вывода может быть 1 за раз

datascience.stackexchange https://datascience.stackexchange.com/questions/15154

Вопрос

Мой желаемый вывод не является кодированием 1-hot, но как вектор 10 дней: [1, 0, 1, 0, 1, 0, 0, 1, 1, 1]и вход похож на обычный набор данных MNIST.

Я хочу использовать TensorFlow для создания модели, чтобы узнать об этом, тогда какую функцию потерь мне выбрать?

Это было полезно?

Решение

Если ваши классы не являются взаимодействующими, то у вас просто есть несколько сигмоидных выходов (вместо функции Softmax, как видно в примере классификаторов MNIST). Каждый вывод будет отдельной вероятностью, что сеть присваивается членству в этом классе.

Для соответствующей функции потери, в TensorFlow вы можете использовать встроенный tf.nn.sigmoid_cross_entropy_with_logits - Обратите внимание, что он работает на Logits - входные данные для функции Sigmoid - для эффективности. Ссылка объясняет вовлеченную математику.

Вы все равно захотите сигмоидную функцию на выходном уровне, поскольку, когда вы считываете прогнозы, но вы применяете функцию потери выше вход сигмовидной функции. Обратите внимание, что это не является требованием вашей проблемы, вы можете легко написать функцию потери, которая работает с сигмоидных выходов, только встроенный TensorFlow был написан по-разному, чтобы получить небольшой повышение скорости.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с datascience.stackexchange
scroll top