Tensorflow嵌入层内的网络结构是什么?

Tensorflow嵌入层内的网络结构是什么?,tensorflow,word2vec,embedding,Tensorflow,Word2vec,Embedding,Tensoflow嵌入层()易于使用, 而且有大量的文章在谈论 “如何使用”嵌入(,) . 然而,我想知道Tensorflow或Pytorch中“嵌入层”的实现。 是word2vec吗? 是Cbow吗? 它是一个特殊的致密层吗?从结构上看,致密层和嵌入层都是隐藏层,其中有神经元。区别在于它们对给定输入和权重矩阵的操作方式 稠密层对给定的权重矩阵执行操作,方法是将输入相乘,向其添加偏差,并对其应用激活函数。而嵌入层使用权重矩阵作为查找字典 嵌入层最好理解为将整数索引(代表特定单词)映射到密集向量的

Tensoflow嵌入层()易于使用, 而且有大量的文章在谈论 “如何使用”嵌入(,) . 然而,我想知道Tensorflow或Pytorch中“嵌入层”的实现。 是word2vec吗? 是Cbow吗?
它是一个特殊的致密层吗?

从结构上看,
致密层和
嵌入层都是隐藏层,其中有神经元。区别在于它们对给定输入和权重矩阵的操作方式

稠密层对给定的权重矩阵执行操作,方法是将输入相乘,向其添加偏差,并对其应用激活函数。而
嵌入层使用权重矩阵作为查找字典

嵌入层最好理解为将整数索引(代表特定单词)映射到密集向量的字典。它将整数作为输入,在内部字典中查找这些整数,并返回相关向量。这实际上是一个字典查找

from keras.layers import Embedding

embedding_layer = Embedding(1000, 64)
这里1000表示字典中的单词数量,64表示这些单词的维度。直观地说,嵌入层就像任何其他层一样,将尝试为任何单词查找64维向量(实数)。该向量将表示该特定单词的语义。它将在使用反向传播进行训练时学习该向量,就像任何其他层一样

当您实例化一个嵌入层时,其权重(其内部标记向量字典)最初是随机的,与任何其他层一样。在训练期间,这些词向量通过反向传播逐渐调整,将空间构造成下游模型可以利用的内容。一旦完全训练,嵌入空间将显示许多结构——一种专门用于训练模型的特定问题的结构

--F.Chollet的Python深度学习


编辑-如何使用“反向传播”来训练
嵌入层的查找矩阵


嵌入层类似于线性层,没有任何激活功能。从理论上讲,
嵌入层也执行矩阵乘法,但不使用任何类型的激活函数为其添加任何非线性。因此,
嵌入
层中的反向传播类似于任何线性层。但实际上,我们在嵌入层中不做任何矩阵乘法,因为输入通常是一个热编码的,权重与一个热编码向量的矩阵乘法与查找一样简单。

然而,我想知道“从keras.layers导入嵌入”背后的网络结构。这是一个1000x64单位的密集层吗?@dogdog是的,你说得有点对<代码>嵌入
层为1000 x 64层。不要称之为密集层。密集层对权重矩阵执行矩阵乘法等操作,而
嵌入层使用权重矩阵作为查找字典。因此,在结构上,它们都是含有神经元的层,
密集层对其重量执行操作,而
嵌入层不感谢您!可以更具体一点吗?或者我们如何使用“反向传播”算法来训练查找矩阵?
嵌入层类似于没有任何激活函数的线性层。从理论上讲,
嵌入层也执行矩阵乘法,但不使用任何类型的激活函数为其添加任何非线性。所以
嵌入层中的反向传播类似于任何线性层。但实际上,我们在嵌入层中不做任何矩阵乘法,因为输入通常是一个热编码的,而权重与一个热编码向量的矩阵乘法就像查找一样简单。我明白了!再次感谢!