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