TensorFlow mit LSTMs für das generieren von text

Möchte ich nutzen, tensorflow zu generieren und text wurden geändert die LSTM-tutorial ( https://www.tensorflow.org/versions/master/tutorials/recurrent/index.html#recurrent-neural-networks ) - code, um dies zu tun, aber meine erste Lösung scheint zu generieren Unsinn, auch nach dem training für eine lange Zeit, es wird nicht besser. Ich kann nicht erkennen, warum. Die Idee ist, zu starten mit einem null-matrix und erzeugen dann ein Wort zu einer Zeit.

Dies ist der code, auf die ich Hinzugefügt habe, die beiden Funktionen unten
https://tensorflow.googlesource.com/tensorflow/+/master/tensorflow/models/rnn/ptb/ptb_word_lm.py

Den generator sieht wie folgt aus

def generate_text(session,m,eval_op):

    state = m.initial_state.eval()

    x = np.zeros((m.batch_size,m.num_steps), dtype=np.int32)

    output = str()
    for i in xrange(m.batch_size):
        for step in xrange(m.num_steps):
            try:
                # Run the batch 
                # targets have to bee set but m is the validation model, thus it should not train the neural network
                cost, state, _, probabilities = session.run([m.cost, m.final_state, eval_op, m.probabilities],
                                                            {m.input_data: x, m.targets: x, m.initial_state: state})

                # Sample a word-id and add it to the matrix and output
                word_id = sample(probabilities[0,:])
                output = output + " " + reader.word_from_id(word_id)
                x[i][step] = word_id

            except ValueError as e:
                print("ValueError")

    print(output)

Habe ich die variable "Wahrscheinlichkeiten" zu dem ptb_model und es ist einfach eine softmax über die logits.

self._probabilities = tf.nn.softmax(logits)

Und der Probenahme:

def sample(a, temperature=1.0):
    # helper function to sample an index from a probability array
    a = np.log(a) / temperature
    a = np.exp(a) / np.sum(np.exp(a))
    return np.argmax(np.random.multinomial(1, a, 1))
InformationsquelleAutor seberik | 2016-04-13
Schreibe einen Kommentar