тензор потока Deeplabv3 + класс весов - PullRequest
0 голосов
/ 26 июня 2018

Я использую последнюю версию deeplab (v3 +) для обучения моего собственного набора данных, состоящего из 6 классов. Я могу обучить свой набор данных, но так как мои метки сильно разбалансированы, я бы хотел взвесить каждый класс значением, специфичным для класса.

Вот как я понял это с моей SegNet

loss_weight = np.array([0.975644, 1.025603, 0.601745, 6.600600, 1.328684, 0.454776])    

cross_entropy = -tf.reduce_sum(tf.multiply(labels * tf.log(softmax + epsilon), head), axis=[1])

Как это будет работать с Deeplab Net?

1 Ответ

0 голосов
/ 16 августа 2018

Согласно этой дискуссии, вы делаете это в файле train_utils.py, как показано ниже,

irgore_weight = 0
label0_weight =1
label1_weight = 10
label2_weight = 15
not_ignore_mask = 
tf.to_float(tf.equal(scaled_labels, 0)) * label0_weight +
tf.to_float(tf.equal(scaled_labels, 1)) * label1_weight +
tf.to_float(tf.equal(scaled_labels, 2)) * label2_weight +
tf.to_float(tf.equal(scaled_labels, ignore_label)) * irgore_weight 
tf.losses.softmax_cross_entropy(
    one_hot_labels,
    tf.reshape(logits, shape=[-1, num_classes]),
    weights=not_ignore_mask,
    scope=loss_scope)

Для получения более подробной информации, пожалуйста, перейдите по ссылке на обсуждение ранее.

...