tensorflow
Multidimensionell softmax
Sök…
Skapa ett Softmax-utgående lager
När state_below är en 2D Tensor är U en 2D viktsmatris, b är en class_size längdvektor:
logits = tf.matmul(state_below, U) + b
return tf.nn.softmax(logits)
När state_below är en 3D-tensor, U , b som tidigare:
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)
Beräkna kostnader på ett Softmax-utgående lager
Använd tf.nn.sparse_softmax_cross_entropy_with_logits , men se upp för att den inte kan acceptera utgången från tf.nn.softmax . Beräkna istället de oskalade aktiveringarna och sedan kostnaden:
logits = tf.matmul(state_below, U) + b
cost = tf.nn.sparse_softmax_cross_entropy_with_logits(logits, labels)
I detta fall: state_below och U ska vara 2D-matriser, b ska vara en vektor med en storlek lika med antalet klasser, och labels ska vara en 2D-matris av int32 eller int64 . Denna funktion stöder också aktiveringstensorer med mer än två dimensioner.
Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow