tensorflow word2vec 教程如何更新嵌入?
How does the tensorflow word2vec tutorial update embeddings?
此线程接近:
但是我对此的解释仍然遗漏了一些东西:https://github.com/tensorflow/tensorflow/blob/r1.2/tensorflow/examples/tutorials/word2vec/word2vec_basic.py
据我了解,您将词典中的目标词和上下文词的索引提供给网络。
_, loss_val = session.run([optimizer, loss], feed_dict=feed_dict)
average_loss += loss_val
然后查找批处理输入return开始时随机生成的向量
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_sampled 随机选择
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_embeddings
向量并使用它来获得最终结果。但我不明白 embeddings
的随机初始化在哪里发生了变化。
如果我要画这个计算图,它会是什么样子(或者更好的是,实际这样做的最佳方法是什么)?
这是 运行 批次中的所有 context/target 对吗?还是一个接一个?
嵌入:嵌入是一个变量。每次你做反向传播时它都会更新(而 运行 优化器有损失)
Grpah: 您是否尝试过保存图形并将其显示在 tensorboard 中?这是您要找的吗?
批处理: 至少在您链接的示例中,他正在使用第 96 行的函数进行批处理。https://github.com/tensorflow/tensorflow/blob/r1.2/tensorflow/examples/tutorials/word2vec/word2vec_basic.py#L96
如果我误解了你的问题,请纠正我。
此线程接近:
但是我对此的解释仍然遗漏了一些东西:https://github.com/tensorflow/tensorflow/blob/r1.2/tensorflow/examples/tutorials/word2vec/word2vec_basic.py
据我了解,您将词典中的目标词和上下文词的索引提供给网络。
_, loss_val = session.run([optimizer, loss], feed_dict=feed_dict)
average_loss += loss_val
然后查找批处理输入return开始时随机生成的向量
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_sampled 随机选择
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_embeddings
向量并使用它来获得最终结果。但我不明白embeddings
的随机初始化在哪里发生了变化。如果我要画这个计算图,它会是什么样子(或者更好的是,实际这样做的最佳方法是什么)?
这是 运行 批次中的所有 context/target 对吗?还是一个接一个?
嵌入:嵌入是一个变量。每次你做反向传播时它都会更新(而 运行 优化器有损失)
Grpah: 您是否尝试过保存图形并将其显示在 tensorboard 中?这是您要找的吗?
批处理: 至少在您链接的示例中,他正在使用第 96 行的函数进行批处理。https://github.com/tensorflow/tensorflow/blob/r1.2/tensorflow/examples/tutorials/word2vec/word2vec_basic.py#L96
如果我误解了你的问题,请纠正我。