2016-06-13 78 views
0

基於ob在seq2seq模型中的損失函數(「sequence_loss_by_example」 - 此處的上下文translate.py)我想評估一個實數值估計器的成本。我希望模型能夠猜出可能在規模上變化很大的實際值。如何結合兩個Crossentropies

現在,我的問題是:您是否可以反饋兩個交叉熵的組合是否符合我實現它們的方式。我可以追加它們然後add_n它們嗎?

for logit, target, weight in zip(logits, targets, weights): 
    real_target = target[:, 0:11] 
    real_logit = logit[:, 0:11] 
    anteil_target = target[:, 11:] 
    anteil_logit = logit[:, 11:] 

    total_size += 1.1 * weight 
    crossent   = weight * nn_ops.softmax_cross_entropy_with_logits(real_logit, real_target, name="main_bits_loss") 
    crossent_anteil = 0.1 * weight * nn_ops.softmax_cross_entropy_with_logits(anteil_logit, anteil_target, name="anteil_bits_loss") 

    log_perp_list.append(crossent) 
    log_perp_list.append(crossent_anteil) 

log_perps = math_ops.add_n(log_perp_list)/total_size 

return log_perps 

而且:爲了調試,我該如何給這個張量命名?

real_target = target[:, 0:11] 

喜歡的東西:

real_target = target[:, 0:11] 
real_target.name('name_goes_here') 

THX一堆 菲利普

回答

1

的[:,0:11]符號內部調用tf.slice(),它確實需要一個名稱參數。在你的情況下,你應該可以這樣做:

real_target = tf.slice(target, [0, 0], [-1, 11], name="real_target")