2017-10-30 14 views
1

Hat Gensim Word2Vec haben eine Option, die entspricht "Trainingsschritte" in der TensorFlow word2vec Beispiel hier: Word2Vec Basic? Falls nein, welchen Standardwert verwendet Gensim? Gilt der Gensim-Parameter iter für Trainingsschritte?Gensim Äquivalent von Trainingsschritten

Das TensorFlow-Skript enthält diesen Abschnitt.

with tf.Session(graph=graph) as session: 
    # We must initialize all variables before we use them. 
    init.run() 
    print('Initialized') 

    average_loss = 0 
    for step in xrange(num_steps): 
     batch_inputs, batch_labels = generate_batch(
      batch_size, num_skips, skip_window) 
     feed_dict = {train_inputs: batch_inputs, train_labels: batch_labels} 

    # We perform one update step by evaluating the optimizer op (including it 
    # in the list of returned values for session.run() 
    _, loss_val = session.run([optimizer, loss], feed_dict=feed_dict) 
    average_loss += loss_val 

    if step % 2000 == 0: 
     if step > 0: 
      average_loss /= 2000 
     # The average loss is an estimate of the loss over the last 2000 batches. 
     print('Average loss at step ', step, ': ', average_loss) 
     average_loss = 0 

    # Note that this is expensive (~20% slowdown if computed every 500 steps) 
    if step % 10000 == 0: 
     sim = similarity.eval() 
     for i in xrange(valid_size): 
      valid_word = reverse_dictionary[valid_examples[i]] 
      top_k = 8 # number of nearest neighbors 
      nearest = (-sim[i, :]).argsort()[1:top_k + 1] 
      log_str = 'Nearest to %s:' % valid_word 
      for k in xrange(top_k): 
       close_word = reverse_dictionary[nearest[k]] 
       log_str = '%s %s,' % (log_str, close_word) 
      print(log_str) 
    final_embeddings = normalized_embeddings.eval() 

Im TensorFlow Beispiel, wenn ich T-SNE auf den Einbettungen und Plotten mit matplotlib ausführen, sieht die Handlung mir mehr sinnvoll, wenn die Anzahl der Stufen hoch ist. Ich verwende ein kleines Korpus von 1.200 E-Mails. Eine Möglichkeit, die vernünftiger erscheint, ist, dass Zahlen zusammen gruppiert sind. Mit gensim möchte ich das gleiche scheinbare Qualitätsniveau erreichen.

Antwort

0

Ja, hat Word2Vec Klassenkonstruktors iter Argument:

iter = Anzahl der Iterationen (Epochen) über den Korpus. Der Standardwert ist 5.

Auch wenn Sie Word2Vec.train() Methode direkt aufrufen, können Sie in epochs Argument übergeben, die die gleiche Bedeutung hat.

Die Anzahl der tatsächlichen Trainingsschritte wird aus Epochen abgeleitet, hängt aber von anderen Parametern wie Textgröße, Fenstergröße und Stapelgröße ab. Wenn Sie nur die Qualität von Einbettungsvektoren verbessern möchten, ist die Erhöhung iter der richtige Weg.