Softmax используется для преобразования необработанных выходных значений ряда выходных нейронов в вероятности для задач классификации нескольких классов.Для задач двоичной классификации вместо использования двух выходных нейронов вы используете один выходной нейрон и применяете логистическую функцию сигмоид к выходному значению.Когда сигмоид проецирует значения в диапазон [0, 1], вы получаете вероятность p
.Это вероятность того, что текущий вход принадлежит одному классу.Вероятность того, что входные данные принадлежат другому классу, тогда равна 1 - p
.
. Для вашего конкретного случая обратите внимание, что документ tf.nn.sigmoid_cross_entropy_with_logits
говорит:
Измеряет вероятность ошибкив задачах дискретной классификации, в которых каждый класс независим и не является взаимоисключающим.Например, можно выполнить многослойную классификацию, в которой изображение может содержать одновременно и слона, и собаку.
Исходя из опубликованного вами кода, я предполагаю, что выходной размер сети превышает единицу(иначе argmax
не имеет смысла), вероятно, два.Это означает, что код фактически выполняет несколько двоичных классификаций, которые должны быть независимыми, но вы сказали, что это должна быть одна двоичная классификация.
Если мои предположения верны, то код неверен, поскольку две независимые двоичные классификациисильно отличаются от одной проблемы классификации.Фактически, y
должен иметь только один выход, и вы бы проверили, равна ли вероятность > 0.5
, чтобы сравнить его с целями.