Python tensorflow word2vec教程如何更新嵌入?

Python tensorflow word2vec教程如何更新嵌入?,python,tensorflow,word2vec,word-embedding,Python,Tensorflow,Word2vec,Word Embedding,这条线索很接近: 但我在解释这一点时仍然遗漏了一些东西: 据我所知,你向网络提供了词典中目标词和上下文词的索引 _, loss_val = session.run([optimizer, loss], feed_dict=feed_dict) average_loss += loss_val 然后查找批输入以返回在开始时随机生成的向量 embeddings = tf.Variable( tf.random_uniform([vocabulary_size, embedding_

这条线索很接近:

但我在解释这一点时仍然遗漏了一些东西:

据我所知,你向网络提供了词典中目标词和上下文词的索引

_, loss_val = session.run([optimizer, loss], feed_dict=feed_dict)
average_loss += loss_val
然后查找批输入以返回在开始时随机生成的向量

    embeddings = tf.Variable(
    tf.random_uniform([vocabulary_size, embedding_size], -1.0, 1.0))
    # Look up embeddings for inputs.
    embed = tf.nn.embedding_lookup(embeddings, train_inputs)
然后,优化器调整权重和偏差,以最好地预测标签,而不是num_抽样随机备选方案

 loss = tf.reduce_mean(
  tf.nn.nce_loss(weights=nce_weights,
                 biases=nce_biases,
                 labels=train_labels,
                 inputs=embed,
                 num_sampled=num_sampled,
                 num_classes=vocabulary_size))

  # Construct the SGD optimizer using a learning rate of 1.0.
  optimizer = tf.train.GradientDescentOptimizer(1.0).minimize(loss)
我的问题如下:

  • 嵌入变量在哪里更新?。在我看来,我可以通过神经网络运行一个单词的索引,或者通过使用
    final\u嵌入
    向量得到最终结果。但是我不明白从它的随机初始化到
    嵌入在哪里发生了变化

  • 如果我画这个计算图,它会是什么样子(或者更好的是,这样做的最佳方式是什么

  • 这是否同时运行批处理中的所有上下文/目标对?还是一个接一个


  • 嵌入:嵌入是一个变量。每次执行backprop时,它都会得到更新(在丢失的情况下运行optimizer)

    Grpah:是否尝试保存图形并在tensorboard中显示?这就是你要找的吗

    批处理:至少在您链接的示例中,他正在使用第96行的函数进行批处理


    如果我误解了你的问题,请纠正我

    因此,您建议优化器同时更新嵌入和权重/偏差?