tensorflow
Wielowymiarowy softmax
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