Семантическая сегментация тензорного потока дает нулевые потери

Я тренирую модель для сегментации машинного печатного текста из изображений. Изображения могут содержать штрих-коды и рукописный текст также. Основополагающие изображения обрабатываются так, что 0 представляет машинную печать, а 1 представляет оставшиеся. И я использую 5-слойный CNN с расширением, который выводит 2 карты в конце.

И моя потеря рассчитывается следующим образом:

def loss(logits, labels):

    logits = tf.reshape(logits, [-1, 2])
    labels = tf.reshape(labels, [-1])

    cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=labels)
    cross_entropy_mean = tf.reduce_mean(cross_entropy, name='cross_entropy')

И у меня есть некоторые изображения, которые содержат только рукописный текст, и соответствующие им основные истины являются пустыми страницами, которые представлены цифрами 1.

Когда я тренирую модель, для этих изображений я получаю потерю 0 и точность обучения 100%. Это правильно? Как эта потеря может быть нулевой? Для других изображений, которые содержат штрих-коды или машинную печать, я получаю некоторую потерю, и они сходятся должным образом.

И когда я тестирую эту модель, штрих-коды правильно игнорируются. Но он выводит как машинную печать, так и рукописный текст, где мне нужна только машинная печать.

Может кто-нибудь подскажет мне, где я ошибаюсь, пожалуйста!

ОБНОВЛЕНИЕ 1:

Раньше я использовал скорость обучения 0,01, а изменение на 0,0001 дало мне некоторую потерю, и она, кажется, сходится, но не очень хорошо. Но тогда как высокая скорость обучения даст потерю 0?

Когда я использую ту же модель в Caffe со скоростью обучения 0,01, это дало некоторую потерю, и она хорошо сходится по сравнению с Tensorflow.

1 ответ

Ваш расчет потерь выглядит хорошо, но потеря нуля в вашем случае странная. Вы пытались играть с темпом обучения? Может быть, уменьшить его. Я столкнулся со странными потерями, и мне помогло снижение скорости обучения.

Другие вопросы по тегам