nn.Embedding理解

 embedding = nn.Embedding(10, 3)声明一个Embedding层,最大的embeddings个数是10,维数为3。Embedding.weight会从标准正态分布中初始化成大小为(num_embeddings, embedding_dim)的矩阵,input中的标号表示从矩阵对应行获取权重来表示单词。所有的input变量都小于10,若大于10,则会报错。

# an Embedding module containing 10 tensors of size 3
embedding = nn.Embedding(10, 3)
# a batch of 2 samples of 4 indices each
input = torch.LongTensor([[1,2,4,5],[4,3,2,9]])
print(embedding(input))

tensor([[[-0.0251, -1.6902,  0.7172],
         [-0.6431,  0.0748,  0.6969],
         [ 1.4970,  1.3448, -0.9685],
         [-0.3677, -2.7265, -0.1685]],

        [[ 1.4970,  1.3448, -0.9685],
         [ 0.4362, -0.4004,  0.9400],
         [-0.6431,  0.0748,  0.6969],
         [ 0.9124, -2.3616,  1.1151]]])

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
torch.nn.embeddingPyTorch 中的一个类,用于将输入的整数或长整数序列转换为对应的嵌入向量。嵌入向量是将离散的符号或词语映射到连续的向量空间中的表示,用于在神经网络中处理自然语言等任务。 这个类可以在神经网络中用作嵌入层,它接收一个整数或长整数张量作为输入,每个元素代表一个符号或词语的索引。然后,它会根据指定的嵌入矩阵将每个索引映射为对应的嵌入向量。嵌入矩阵的大小通常为(词汇大小,嵌入维度),其中词汇大小表示所有可用符号或词语的数量,嵌入维度表示每个嵌入向量的长度。 以下是一个使用 torch.nn.embedding 的示例: ```python import torch import torch.nn as nn # 创建一个嵌入层 embedding = nn.Embedding(100, 128) # 100 是词汇大小,128 是嵌入维度 # 输入一个整数序列 input = torch.LongTensor([[1,2,4,5], [4,3,2,9]]) # 将整数序列转换为嵌入向量 output = embedding(input) print(output.shape) # 输出:torch.Size([2, 4, 128]) ``` 在上面的示例中,我们首先创建了一个嵌入层,指定词汇大小为100,嵌入维度为128。然后,我们定义了一个输入整数序列 input,其中包含两个样本,每个样本有四个整数。最后,我们使用 embedding 对输入进行转换得到嵌入向量 output,该结果的形状是(2, 4, 128),其中2表示样本数量,4表示每个样本的整数数量,128表示嵌入维度。 希望这个例子能够帮助你理解 torch.nn.embedding 的用法。如果还有其他问题,请随时提问!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值