TensorFlow word2vec教程输入

TensorFlow word2vec教程输入,tensorflow,word2vec,Tensorflow,Word2vec,在浏览TensorFlow时,我很难理解教程中关于存储skip gram模型输入的占位符的解释。解释说, skip-gram模型接受两个输入。一个是一批整数 表示源上下文词,另一个表示目标词。。。现在我们需要做的是查找批次中每个源单词的向量。。。现在我们有了每个单词的嵌入,我们想尝试预测目标单词 然而,由于我们使用的是skip-gram模型(与CBOW相反),我们是否应该查找每个目标词的词向量,然后根据目标词预测上下文词 此外,我假设下面的代码首先为目标词(输入)声明一个占位符,然后为源上下文词

在浏览TensorFlow时,我很难理解教程中关于存储skip gram模型输入的占位符的解释。解释说,

skip-gram模型接受两个输入。一个是一批整数 表示源上下文词,另一个表示目标词。。。现在我们需要做的是查找批次中每个源单词的向量。。。现在我们有了每个单词的嵌入,我们想尝试预测目标单词

然而,由于我们使用的是skip-gram模型(与CBOW相反),我们是否应该查找每个目标词的词向量,然后根据目标词预测上下文词

此外,我假设下面的代码首先为目标词(输入)声明一个占位符,然后为源上下文词(我们的标签)声明一个占位符


我是不是误解了教程

skip gram教程假设您的数据集如下所示:

(快,狐狸),(快,棕色),(棕色,快),(棕色,狐狸)

其中它是成对的(输入、输出)=(中心词、上下文词)

事实上,如果对多个(输入、输出)对进行平均,您将获得类似于在每个示例中预测每个上下文单词的行为

使用NCE作为损失函数也证明了这一选择的合理性,NCE试图在一些噪声词(随机选择)中区分单个目标词(上下文中的一个词)

您的输入和输出占位符应该具有相同的维度
(batch\u size,1)
,但输入只是
(batch\u size)
,因为嵌入层会自动扩展维度,而丢失函数(提供标签的地方)需要矩阵作为输入


因此,本教程并不是Mikolov的skip-gram模型的精确实现,而是为了代码的简单性和可读性而进行了一些近似计算。

skip-gram教程假设您的数据集如下所示:

(快,狐狸),(快,棕色),(棕色,快),(棕色,狐狸)

其中它是成对的(输入、输出)=(中心词、上下文词)

事实上,如果对多个(输入、输出)对进行平均,您将获得类似于在每个示例中预测每个上下文单词的行为

使用NCE作为损失函数也证明了这一选择的合理性,NCE试图在一些噪声词(随机选择)中区分单个目标词(上下文中的一个词)

您的输入和输出占位符应该具有相同的维度
(batch\u size,1)
,但输入只是
(batch\u size)
,因为嵌入层会自动扩展维度,而丢失函数(提供标签的地方)需要矩阵作为输入


因此,本教程不是Mikolov的skip-gram模型的精确实现,而是为了代码的简单性和可读性进行了一些近似计算。

那么输入是中心词,标签是上下文词?我把“目标词”解释为指那些中心词。在教程中:“回想一下skip gram反转上下文和目标,并尝试从目标词预测每个上下文词”。我们说的是同样的事情。给定一个上下文,如
context1 context2 center context3 context4
,将其翻译成
(center,context1),(center,context2),(center,context3)
等。因此,输入是上下文的中心词,输出是上下文的一个词,因此输入是中心词,标签是上下文词吗?我把“目标词”解释为指那些中心词。在教程中:“回想一下skip gram反转上下文和目标,并尝试从目标词预测每个上下文词”。我们说的是同样的事情。给定一个上下文,如
context1 context2 center context3 context4
,将其翻译成
(center,context1),(center,context2),(center,context3)
等对。因此,输入是上下文的中心词,输出是上下文的一个词
train_inputs = tf.placeholder(tf.int32, shape=[batch_size])
train_labels = tf.placeholder(tf.int32, shape=[batch_size, 1])