gpt4 book ai didi

python - tensorflow word2vec 基本输入输出占位符

转载 作者:行者123 更新时间:2023-11-30 09:09:46 24 4
gpt4 key购买 nike

我是 tensorflow 的新手。我试图理解 word2vec_basic脚本。

一开始它定义了输入和输出。

train_inputs = tf.placeholder(tf.int32, shape=[batch_size])
train_labels = tf.placeholder(tf.int32, shape=[batch_size, 1])

如果我理解正确的话,train_inputs 的形状 - [batch_size] 是一个整数数组,数组的长度是 batch_size。那么train_labels的形状为[batch_size, 1],即单行矩阵。正确的?如果是,我不明白为什么会这样,以及这些占位符中应该存储什么。按照理论,label是一个int,input是一个上下文滑动窗口的数组,那么为什么batch_size会出现在那里?

我似乎错过了理论中的一些基本内容。我希望得到解释。

最佳答案

我最近碰巧在调试word2vec_basic.py,对于一个简单的数据集示例“狗看到一只猫,狗追赶猫,猫爬了一棵树”,字典{ 'the': 0, 'cat': 1, 'dog': 2, 'a': 3, 'saw': 4, 'chased': 5, 'climbed': 6, 'tree': 7}, reverse_dictionary{0: 'the', 1: 'cat', 2: 'dog', 3: 'a', 4: 'saw', 5: 'chased ', 6: '爬过', 7: '树'}.

当batch_size=8、skip_window=1、embedding_size=1 和num_skips=2 时,调用generate_batch 返回:
批处理:[2 2 4 4 3 3 1 1]
标签:[[0] [4] [2] [3] [4] [1] [0] [3]]

换句话来说,它们是:
批处理:[狗,狗,锯,锯,a,a,猫,猫]
标签:[[the]、[saw]、[dog]、[a]、[saw]、[cat]、[the]、[a]]

对于数据集中的前三个单词“thedog saw”,由于skip_window为1,预期的(目标,上下文)对应该是(dog,the)和(dog,saw) - 参见“The Skip-克模型”在 https://www.tensorflow.org/tutorials/word2vec如果需要,了解更多详细信息。

至于为什么[batch_size, 1]中使用1,nce_loss文档位于https://www.tensorflow.org/api_docs/python/tf/nn/nce_loss说“标签:int64 类型和形状 [batch_size, num_true] 的张量。目标类。”和“num_true:一个整数。每个训练示例的目标类数量。” (num_true的默认值为1)

并且代码中的nce_loss定义为:

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

现在应该很容易看出 train_inputstrain_labels 的形状有意义。

关于python - tensorflow word2vec 基本输入输出占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42663047/

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