【问题标题】:Gensim equivalent of training stepsGensim 相当于训练步骤
【发布时间】:2017-10-30 23:48:37
【问题描述】:

gensim Word2Vec 是否有一个相当于 TensorFlow word2vec 示例中的“训练步骤”的选项:Word2Vec Basic?如果不是,gensim 使用什么默认值? gensim参数iter和训练步骤有关系吗?

TensorFlow 脚本包含此部分。

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()

在 TensorFlow 示例中,如果我对嵌入执行 T-SNE 并使用 matplotlib 绘图,当步数较高时,绘图对我来说看起来更合理。 我正在使用一个包含 1,200 封电子邮件的小型语料库。它看起来更合理的一种方式是数字聚集在一起。我想使用 gensim 获得相同的明显质量水平。

【问题讨论】:

    标签: python tensorflow nlp word2vec gensim


    【解决方案1】:

    是的,Word2Vec 类构造函数有 iter 参数:

    iter = 语料库的迭代次数(时期)。默认为 5。

    另外,如果你直接调用Word2Vec.train()方法,你可以传入epochs具有相同含义的参数。

    实际训练步数是从 epoch 推导出来的,但取决于 其他参数,如文本大小、窗口大小和批量大小。如果您只是想提高嵌入向量的质量,增加iter 是正确的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-15
      • 2020-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-24
      相关资源
      最近更新 更多