2016-01-04 1 views

ответ

5

Существует аналогичный вопрос here, ответ используется keras.

Это похоже при использовании тензорного потока. Идея такова: мы можем определить несколько выходов сети и, следовательно, множественные функции потерь (цели). Затем мы говорим оптимизатору, чтобы свести к минимуму комбинированную функцию потерь, обычно используя линейную комбинацию.

принципиальная схема Multi Task Deep Learning Diagram

Эта диаграмма рисуется в соответствии с этим paper.

Предположим, мы обучаем классификатор, который предсказывает цифру на изображении с максимальным количеством символов в 5 цифр на изображение. Здесь мы определили 6 выходных уровней: digit1, digit2, digit3, digit4, digit5, length. Уровень digit должен выводить 0 ~ 9, если есть такая цифра, или X (замените его реальным числом на практике), если в его позиции нет цифры . То же самое для length, оно должно выводить 0 ~ 5, если изображение содержит 0 ~ 5 цифр, или X, если оно содержит более 5 цифр.

Теперь тренировать его, мы просто сложить все перекрестную потерю энтропии каждой SoftMax функции:

# Define loss and optimizer 
lossLength = tf.log(tf.clip_by_value(tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(length_logits, true_length)), 1e-37, 1e+37)) 
lossDigit1 = tf.log(tf.clip_by_value(tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(digit1_logits, true_digit1)), 1e-37, 1e+37)) 
lossDigit2 = tf.log(tf.clip_by_value(tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(digit2_logits, true_digit2)), 1e-37, 1e+37)) 
lossDigit3 = tf.log(tf.clip_by_value(tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(digit3_logits, true_digit3)), 1e-37, 1e+37)) 
lossDigit4 = tf.log(tf.clip_by_value(tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(digit4_logits, true_digit4)), 1e-37, 1e+37)) 
lossDigit5 = tf.log(tf.clip_by_value(tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(digit5_logits, true_digit5)), 1e-37, 1e+37)) 

cost = tf.add(
     tf.add(
     tf.add(
     tf.add(
     tf.add(cL,lossDigit1), 
     lossDigit2), 
     lossDigit3), 
     lossDigit4), 
     lossDigit5) 

optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost) 

 Смежные вопросы

  • Нет связанных вопросов^_^