pytorch nn.Embedding()原理

Word Embedding

Word embedding 是将自然语言中的词语映射为实数向量的一种技术,通常通过机器学习算法从文本数据中学习得到。其基本思想是将每个词语映射到高维空间中的一个向量,使得词语在语义上相似的向量在空间中距离较近,从而能够将自然语言中的词语转化为计算机能够处理的数值型数据。Word embedding 技术在自然语言处理、机器翻译、信息检索等领域得到了广泛应用。常见的 Word embedding 方法有 CBOW(Continuous Bag-of-Words)、Skip-gram 和 GloVe 等。

nn.Embedding

为什么使用嵌入层

1、使用One-hot 方法编码的向量会很高维也很稀疏。假设我们在做自然语言处理(NLP)中遇到了一个包含2000个词的字典,当使用One-hot编码时,每一个词会被一个包含2000个整数的向量来表示,其中1999个数字是0,如果字典再大一点,这种方法的计算效率会大打折扣。

2、训练神经网络的过程中,每个嵌入的向量都会得到更新。通过上面的图片我们就会发现在多维空间中词与词之间有多少相似性,这使我们能可视化的了解词语之间的关系,不仅仅是词语,任何能通过嵌入层 Embedding 转换成向量的内容都可以这样做。

参数

  • num_embeddings - 词嵌入字典大小,即一个字典里要有多少个词。
  • embedding_dim - 每个词嵌入向量的大小。

import torch

embedding=torch.nn.Embedding(10,10)
for i in range(10):
    print(i)
    tensor=torch.tensor(i)
    output=embedding(tensor)
    print(output)

参考:

经常提到的Embedding层有什么用? | 机器之心 (jiqizhixin.com)

猜你喜欢

转载自blog.csdn.net/qq_40107571/article/details/130462878