每天讲解一点PyTorch 【4】nn.Embedding

本文介绍了如何使用PyTorch的nn.Embedding模块创建词嵌入模型。通过示例展示了如何将词索引映射到预定义维度的向量表示,这些向量可以捕捉词汇之间的语义和语法关系。nn.Embedding接受两个参数,分别是词汇表大小和每个词向量的维度。在实例中,我们观察了不同输入形状如何影响输出,并展示了如何通过LongTensor传递词索引来获取词嵌入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天我们讲解创建词嵌入模型
nn.Embedding(5, 6)
代表5个词(总共有多少个词)6维度(每个词的编码维度),5x6矩阵

>>> import torch
>>> import torch.nn as nn
>>> 
>>> embeds = nn.Embedding(5, 6)
>>> embeds
Embedding(5, 6)
>>> 
>>> import torch
>>> import torch.nn as nn
>>> 
>>> embeds = nn.Embedding(5, 6)
>>> embeds
Embedding(5, 6)
>>> # I like cv
>>> # 1 2 3
>>> word = [[1,2,3],[0,0,3]]
>>> x = torch.LongTensor(word)
>>> x
tensor([[1, 2, 3],
        [0, 0, 3]])

>>> embed_ = embeds(torch.LongTensor(word))
>>> 
>>> embed_
tensor([[[ 1.1774,  0.0840,  1.2077,  0.3492, -0.1718, -0.2256],
         [-1.1595,  0.2247,  0.8931, -0.6904, -0.3020, -0.4171],
         [-2.2413,  0.3168, -0.1047,  0.8574, -0.2742,  0.1194]],

        [[ 1.7274,  0.9688, -1.2030,  1.0693, -0.5663,  1.8714],
         [ 1.7274,  0.9688, -1.2030,  1.0693, -0.5663,  1.8714],
         [-2.2413,  0.3168, -0.1047,  0.8574, -0.2742,  0.1194]]],
       grad_fn=<EmbeddingBackward>)
>>> embed_.shape
torch.Size([2, 3, 6])
>>> 

输入维度:2x3的词
每个词编码:6维度向量

>>> word = [1,2,3]
>>> word
[1, 2, 3]
>>> embed_ = embeds(torch.LongTensor(word))
>>> embed_
tensor([[ 1.1774,  0.0840,  1.2077,  0.3492, -0.1718, -0.2256],
        [-1.1595,  0.2247,  0.8931, -0.6904, -0.3020, -0.4171],
        [-2.2413,  0.3168, -0.1047,  0.8574, -0.2742,  0.1194]],
       grad_fn=<EmbeddingBackward>)
>>> 
>>> embed_.shape
torch.Size([3, 6])
>>> 

输入维度:3的词
每个词编码:6维度向量

>>> embeds = nn.Embedding(4, 6)
>>> embeds
Embedding(4, 6)
>>> word
[1, 2, 3]
>>> x = torch.LongTensor(word)
>>> x
tensor([1, 2, 3])
>>> 
>>> embed_ = embeds(x)
>>> embed_
tensor([[ 1.8449,  0.3119, -0.0317, -0.7793, -0.6710,  0.0316],
        [ 0.8638, -1.2257,  0.5386, -0.6412,  1.4129,  0.0926],
        [ 0.5742,  1.2701,  0.3415,  0.3161, -1.7954,  0.8924]],
       grad_fn=<EmbeddingBackward>)
>>> 
>>> embeds = nn.Embedding(len("0123456789"), 6)
>>> embeds
Embedding(10, 6)
>>> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值