tensorflow
Mehrdimensionales softmax
Suche…
Erstellen einer Softmax-Ausgabeschicht
Wenn state_below
ein 2D-Tensor ist, ist U
eine 2D-Gewichtungsmatrix und b
ein class_size
length-Vektor:
logits = tf.matmul(state_below, U) + b
return tf.nn.softmax(logits)
Wenn state_below
ein 3D-Tensor ist, sind U
, b
wie zuvor:
def softmax_fn(current_input):
logits = tf.matmul(current_input, U) + b
return tf.nn.softmax(logits)
raw_preds = tf.map_fn(softmax_fn, state_below)
Kosten auf einer Softmax-Ausgabeschicht berechnen
Verwenden Sie tf.nn.sparse_softmax_cross_entropy_with_logits
, achten Sie jedoch darauf, dass die Ausgabe von tf.nn.softmax
nicht akzeptiert tf.nn.softmax
. Berechnen Sie stattdessen die nicht skalierten Aktivierungen und dann die Kosten:
logits = tf.matmul(state_below, U) + b
cost = tf.nn.sparse_softmax_cross_entropy_with_logits(logits, labels)
In diesem Fall sollten state_below
und U
2D-Matrizen sein, b
sollte ein Vektor mit einer Größe sein, die der Anzahl der Klassen entspricht, und labels
sollten eine 2D-Matrix von int32
oder int64
. Diese Funktion unterstützt auch Aktivierungstensoren mit mehr als zwei Dimensionen.
Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow