nn.Embedding()网络层

 

目录

主要特点:

使用场景:

基本参数:

工作流程:

​编辑

代码示例:


  nn.Embedding 是 PyTorch 中的一个模块,用于将离散的词汇或索引映射到连续的向量空间。这种嵌入层通常用于处理诸如单词、字符或其他类型的离散数据,它们在自然语言处理(NLP)和计算机视觉任务中非常有用。

主要特点:

  1. 高维映射将高维度的词表示转换为低维度的词表示。
  2. 参数共享:每个索引只对应一个嵌入向量,所有输入共享相同的嵌入矩阵。
  3. 可训练性:嵌入向量是可学习的参数,可以在训练过程中进行优化。

使用场景:

  • 自然语言处理:将单词或字符索引转换为密集的词向量。
  • 序列模型:用于RNN、LSTM或GRU等序列处理模型的输入层。
  • 推荐系统:将用户和商品ID映射为嵌入向量,以捕捉复杂的用户和商品特征。

基本参数:

  • num_embeddings:词汇表的大小,即索引的总数。
  • embedding_dim:每个嵌入向量的维度。

工作流程:

  1. 初始化:创建一个 nn.Embedding 实例,指定词汇表大小和嵌入维度。
  2. 前向传播:将离散索引作为输入,输出对应的嵌入向量。
  3. 训练:在训练过程中,根据损失函数反向传播,更新嵌入向量。

代码示例:

class CBOW(nn.Module) :#神经网络
    def __init__(self, vocab_size, embedding_dim):
    # vocab_size:词汇表的大小,即词嵌入的one-hot编码大小
    # embedding_dim:压缩后的词嵌入大小
        super(CBOW, self).__init__()
        self.embeddings = nn.Embedding(vocab_size, embedding_dim)  
        # 创建一个词嵌入层,用于将词汇表中的每个词映射到一个embedding_dim维的向量空间
        self.proj = nn.Linear(embedding_dim, 128)
        # 定义一个线性变换层,词向量的维度从embedding_dim映射到128维
        self.output = nn.Linear(128, vocab_size)
        # 定义输出层,将128维的向量映射回vocab_size维,用于预测词汇表中每个词的概率

    def forward(self, inputs):  # inputs是输入的词索引
        embeds = sum(self.embeddings(inputs)).view(1, -1)
        # 使用nn.Embedding层获取输入词的词向量,并将这些词向量求和,然后使用view方法展开
        out = F.relu(self.proj(embeds))
        out = self.output(out)
        nll_prob = F.log_softmax(out, dim=-1)
        # 使用 log_softmax 函数对输出层的原始预测值进行归一化处理,得到每个词的对数概率
        return nll_prob

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值