gpt4 book ai didi

arrays - 了解 word2vec (TensorFlow) 中的输入和标签

转载 作者:行者123 更新时间:2023-11-30 08:34:47 25 4
gpt4 key购买 nike

我试图正确理解 tensorflow "Vector Representations of Words" 中的 batch_inputbatch_labels教程。

例如,我的数据

 1 1 1 1 1 1 1 1 5 251 371 371 1685 ...

...开头

skip_window = 2 # How many words to consider left and right.
num_skips = 1 # How many times to reuse an input to generate a label.

那么生成的输入数组为:

bach_input = 1 1 1 1 1 1 5 251 371 ....  

这是有道理的,从2(=窗口大小)之后开始,然后连续。标签:

batch_labels = 1 1 1 1 1 1 251 1 1685 371 589 ...

我不太理解这些标签。每个输入右侧应该有 4 个标签(每侧窗口大小 2)。但 batch_label 变量的长度相同。

来自 tensorflow 教程:

The skip-gram model takes two inputs. One is a batch full of integers representing the source context words, the other is for the target words.

根据教程,我已将两个变量声明为:

  batch = np.ndarray(shape=(batch_size), dtype=np.int32)
labels = np.ndarray(shape=(batch_size, 1), dtype=np.int32)

我应该如何解释batch_labels

最佳答案

There are supposed to be 4 labels for each input right (window size 2, on each side). But the batch_label variable is the same length.

关键设置是num_skips = 1。该值定义每个单词生成的(输入,标签)元组的数量。请参阅下面具有不同 num_skips 的示例(我的 data 序列似乎与您的不同,对此感到抱歉)。

示例#1 - num_skips=4

batch, labels = generate_batch(batch_size=8, num_skips=4, skip_window=2)

它为每个单词生成 4 个标签,即使用整个上下文;由于 batch_size=8 此批处理中只处理了 2 个单词(126),其余的将进入下一个批处理:

data = [5239, 3084, 12, 6, 195, 2, 3137, 46, 59, 156, 128, 742, 477, 10572, ...]
batch = [12 12 12 12 6 6 6 6]
labels = [[6 3084 5239 195 195 3084 12 2]]

示例#2 - num_skips=2

batch, labels = generate_batch(batch_size=8, num_skips=2, skip_window=2)

在这里,您会期望每个单词在batch序列中出现两次; 2 个标签是从 4 个可能的单词中随机抽取的:

data = [5239, 3084, 12, 6, 195, 2, 3137, 46, 59, 156, 128, 742, 477, 10572, ...]
batch = [ 12 12 6 6 195 195 2 2]
labels = [[ 195 3084 12 195 3137 12 46 195]]

示例#3 - num_skips=1

batch, labels = generate_batch(batch_size=8, num_skips=1, skip_window=2)

最后,此设置与您的设置相同,为每个单词生成一个标签;每个标签都是从 4 个单词的上下文中随机抽取的:

data = [5239, 3084, 12, 6, 195, 2, 3137, 46, 59, 156, 128, 742, 477, 10572, ...]
batch = [ 12 6 195 2 3137 46 59 156]
labels = [[ 6 12 12 195 59 156 46 46]]

How should I interpret the batch_labels?

每个标签都是从上下文中预测的中心词。但生成的数据可能并非全部(context, center)元组,具体取决于生成器的设置。

另请注意,train_labels 张量是一维的。 Skip-Gram 训练模型根据给定的中心词预测任何上下文单词,而不是一次预测所有 4 个上下文单词。这解释了为什么所有训练对 (12, 6)(12, 3084)(12, 5239)(12 ,195) 有效。

关于arrays - 了解 word2vec (TensorFlow) 中的输入和标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47302947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com