Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow Word2vec中Softmax层的权重形状(跳过克)_Tensorflow_Deep Learning_Nlp_Word2vec_Softmax - Fatal编程技术网

Tensorflow Word2vec中Softmax层的权重形状(跳过克)

Tensorflow Word2vec中Softmax层的权重形状(跳过克),tensorflow,deep-learning,nlp,word2vec,softmax,Tensorflow,Deep Learning,Nlp,Word2vec,Softmax,我有一个关于Softmax层权重形状的问题 假设我们的词汇量是10000个单词,我们的嵌入层将把维度减少到300 所以一个输入是一个长度为10000的热向量,嵌入层有300个神经元。这意味着,从输入层到嵌入层的权重矩阵的形状为10000*300(词汇表中的单词数*嵌入层中的神经元) 根据本教程()和其他许多教程,下一个权重矩阵(连接嵌入层和Softmax分类器)具有相同的形状(词汇表中的单词数*嵌入层中的神经元,或者在我们的例子中为10000*300)。我不明白为什么?它不应该是300*1000

我有一个关于Softmax层权重形状的问题

假设我们的词汇量是10000个单词,我们的嵌入层将把维度减少到300

所以一个输入是一个长度为10000的热向量,嵌入层有300个神经元。这意味着,从输入层到嵌入层的权重矩阵的形状为10000*300(词汇表中的单词数*嵌入层中的神经元)

根据本教程()和其他许多教程,下一个权重矩阵(连接嵌入层和Softmax分类器)具有相同的形状(词汇表中的单词数*嵌入层中的神经元,或者在我们的例子中为10000*300)。我不明白为什么?它不应该是300*10000吗(因为我们必须预测每个类的10000个概率)

你能给我解释一下吗?

这是因为功能。此函数的设计方式需要权重矩阵具有形状,
[词汇表大小,尺寸]

根据文件

权重:形状[num_类,dim]的张量,或沿维度0的串联具有形状[num_类,dim]的张量对象列表。(可能是切分的)类嵌入

为什么会这样?
sampled_softmax_loss
的工作方式是对属于每次迭代都要优化的输出节点子集的权重进行采样(即不对所有输出节点的权重进行优化)。这样做的方式是使用。因此,将重量设置为形状
[vocab_size,dim]
是实现此目的的理想选择。

谢谢您的回答,这很有帮助!但是有没有一些理论解释为什么会这样?一个可能的原因是,在softmax层中,对与每个节点相关的权重进行采样(即在此方向抓取一行)更为直接。例如,如果您使用tf.gather,它基本上是传递一维索引序列。编辑我的答案以说明为什么会出现这种情况。