Я реализовал U- Net в Keras для проблемы сегментации изображения, над которой я работаю. Я обнаружил, что результаты ранних эпох дают очень хорошие результаты, хотя и с низкой вероятностью. По мере продолжения обучения и увеличения IoU я получаю меньше пикселей в выводе, но они имеют более высокую вероятность.
Чтобы быть более кратким, мой вывод пропускает определенные функции, но имеет более высокие вероятности в функциях, которые он идентифицирует.
Мне интересно знать, могу ли я исправить это, заставив значения пикселов быть 1 после выходного слоя с функцией активации сигмоида. Есть ли простой способ сделать это? Я использую binary_crossentropy в качестве функции потерь, поэтому я надеялся, что смогу сделать что-то вроде:
def binary_crossentropy_thresh(y_true,y_pred):
y_pred[y_pred>=0.2] = 1
return binary_crossentropy(y_true,y_pred)
Но это не сработает на Тензорах. Буду очень признателен за любые предложения.
Извинения, если я недостаточно объяснил свою проблему.