2016-08-19 2 views
2

Je suis nouveau sur TensorFlow et j'ai besoin de former un modèle de langue, mais je rencontre quelques difficultés en lisant le document comme indiqué ci-dessous.Qu'est-ce que softmax_w et softmax_b dans ce document?

lstm = rnn_cell.BasicLSTMCell(lstm_size) 
# Initial state of the LSTM memory. 
state = tf.zeros([batch_size, lstm.state_size]) 

loss = 0.0 
for current_batch_of_words in words_in_dataset: 
    # The value of state is updated after processing each batch of words. 
    output, state = lstm(current_batch_of_words, state) 

    # The LSTM output can be used to make next word predictions 
    logits = tf.matmul(output, softmax_w) + softmax_b 
    probabilities = tf.nn.softmax(logits) 
    loss += loss_function(probabilities, target_words) 

Je ne comprends pas pourquoi cette ligne est nécessaire,

logits = tf.matmul(output, softmax_w) + softmax_b 

Depuis que j'appris qu'une fois que la sortie est calculée sur et les target_words sont connus, nous pouvons travailler directement la perte. Il semble que le pseudo-code ajoute une couche supplémentaire. De plus, qu'est ce que softmax_w et softmax_b qui ne sont pas précités. J'ai pensé que j'ai peut-être manqué quelque chose d'important en soulevant une question aussi simple.

Veuillez me diriger dans la bonne direction, et toutes les suggestions sont très appréciées. Merci beaucoup.

Répondre

3

Tout ce que fait ce code est d'ajouter une transformation linéaire supplémentaire avant de calculer la softmax. softmax_w devrait être un tf.Variable contenant une matrice de poids. softmax_b devrait être un tf.Variable contenant un vecteur de polarisation.

Jetez un oeil à l'exemple softmax dans ce tutoriel pour plus de détails: https://www.tensorflow.org/versions/r0.10/tutorials/mnist/beginners/index.html#softmax-regressions

+0

Oui, deux variables sont bien nommé et, par conséquent intuitive conjecturer leurs significations. C'est le softmax que j'ai raté. Merci beaucoup. – lerner