我有一个关于Softmax层的重量形状的问题。
假设我们的词汇量是10000个单词,我们的嵌入层将降到300个维度。
因此,输入是长度为10000的一个热向量,嵌入层有300个神经元.这意味着,从输入层到嵌入层的权重矩阵的形状为10000*300(词汇中的单词数*嵌入层中的神经元)。
根据本教程(https://www.kaggle.com/christofer/word2vec-skipgram-model-with-tensorflow)和许多其他方面,下一个权重矩阵(连接嵌入层和Softmax分类器)具有相同的形状(词汇中的单词数*嵌入层中的神经元数,或者在我们的例子中是10000 * 300)。我不明白为什么?不是应该是300 * 10000吗(因为我们必须预测每堂课的概率是10000)?
你能解释一下吗?
发布于 2019-12-03 11:10:56
这是因为tf.nn.sampled_softmax_loss函数。在此函数的设计方法中,需要权矩阵才能有形状,[vocabulary size, dim]。
从文件来看,
权值:形状num_classes,dim的张量,或沿维0连接的张量对象的列表,其形状为num_classes,dim。(可能是切分的)类嵌入。
为什么是这种情况?
sampled_softmax_loss的工作方式是采样属于每个迭代都要优化的输出节点子集的权重(即不对所有输出节点的权重进行优化)。它的方法是使用embedding_lookup。因此,在形状[vocab_size, dim]的重量使其理想的这一目的。
https://stackoverflow.com/questions/59155692
复制相似问题