Szukaj…


Tworzenie warstwy wyjściowej Softmax

Kiedy state_below jest state_below 2D, U jest macierzą wag 2D, b jest class_size długości class_size :

logits = tf.matmul(state_below, U) + b
return tf.nn.softmax(logits)

Gdy state_below jest tensorem 3D, U , b jak poprzednio:

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)

Obliczanie kosztów w warstwie wyjściowej Softmax

Użyj tf.nn.sparse_softmax_cross_entropy_with_logits , ale uważaj, że nie może zaakceptować danych wyjściowych tf.nn.softmax . Zamiast tego obliczyć nieskalowane aktywacje, a następnie koszt:

logits = tf.matmul(state_below, U) + b
cost = tf.nn.sparse_softmax_cross_entropy_with_logits(logits, labels)

W tym przypadku: state_below i U powinny być macierzami 2D, b powinien być wektorem o wielkości równej liczbie klas, a labels powinny być macierzą 2D int32 lub int64 . Ta funkcja obsługuje również tensory aktywacyjne o więcej niż dwóch wymiarach.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow