2
テンソルフローでtf.nn.sparse_softmax_cross_entropy_with_logitsを使用すると、クラスラベルを-1に設定することで特定の行の損失を計算することができます(それ以外の場合は、0-> numclasses-1 )。Tensorflowのスパースクロスエントロピー
これは残念ながら(ソースnn_ops.pyのコメントに記載されているように)勾配計算を中断します。私がやりたい何
には、次のようなものです:
raw_classification_output1 = [0,1,0]
raw_classification_output2 = [0,0,1]
classification_output =tf.concat(0,[raw_classification_output1,raw_classification_output2])
classification_labels = [1,-1]
classification_loss = tf.nn.sparse_softmax_cross_entropy_with_logits(classification_output,classification_labels)
total_loss = tf.reduce_sum(classification_loss) + tf.reduce_sum(other_loss)
optimizer = tf.train.GradientDescentOptimizer(1e-3)
grads_and_vars = optimizer.compute_gradients(total_loss)
changed_grads_and_vars = #do something to 0 the incorrect gradients
optimizer.apply_gradients(changed_grads_and_vars)
それらの勾配をゼロにする最も簡単な方法は何ですか?
[clip_by_value](https://www.tensorflow.org/versions/r0.8/api_docs/python/train.html#clip_by_value)を使用してグランドナンバーをクリップすることができます。 – fabrizioM
申し訳ありませんが、私はあなたが "間違った"勾配によって何を意味するか分かりません。 "-1"の行の消失はゼロになります。つまり、最終的な損失でパラメータが有効にならないのはなぜですか? –