Отобразите выходные значения сети в 0 или 1 TensorFlow - PullRequest
0 голосов
/ 02 октября 2018

У меня есть сеть с выходным слоем размером [3, 13000, 3, 1] (B,H,W,C), и я преобразовал ее, используя tf.reduce_mean, чтобы получить выходной размер [3, 13000, 1].

Графически это enter image description here

Правильно?

Мои метки имеют размер [3, 13000, 1] как мой новый вывод и все значения 0 или 1.

Теперь я должен вычислитьпотеря с метками.Чтобы вычислить эту потерю, я использую эту формулу tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(logits=predict, labels=y)), но сначала мне нужно преобразовать все значения на выходе в 0 или 1. Я использую функцию tf.nn.softmax, но я получаю все 1.

Как я могу реализовать функцию, которая отображает все значения под порогом 0 и выше 1?И этот порог должен быть например (max value - min value) / 2.Это также должно работать с градиентом на шаге backprop.

1 Ответ

0 голосов
/ 02 октября 2018

Поскольку ваш прогноз представляет собой отдельное значение класса, при применении к нему softmax оно всегда будет равно 1 независимо от значения: (exp(predict)/sum(exp(predict)) = exp(predict)/exp(predict) = 1).Либо преобразуйте входные данные в one-hot и заставьте модель прогнозировать два класса: [0, 1], либо используйте sigmoid cross entropy.

...