2016-06-13 6 views
0

ベースのseq2seq-model( "sequence_loss_by_example" - ここではtranslate.pyというコンテキスト)の損失関数に基づいて、実際の値見積もりの​​コストを評価しようとしています。私は、モデルが大規模に変化するかもしれない実際の値を推測するようにしたい。2つのクロスエントロピーの結合方法

私の質問は次のとおりです。2つのクロスエントロピーの組み合わせが、私がそれらを実装した方法に合っているかどうかフィードバックしてください。私はそれらを追加してから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

:nameパラメータを取るない表記内部呼び出しtf.slice()、[、0時11分に]。あなたの場合、次のようなことができるはずです:

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

関連する問題