随笔记录——pytorch词嵌入方法

一般先将原始的文本数据进行初步的词嵌入,再进行模型训练, pytorch也提供了基本的词嵌入方法

CLASStorch.nn.Embedding(num_embeddings, embedding_dim, padding_idx=None, max_norm=None, norm_type=2.0, scale_grad_by_freq=False, sparse=False, _weight=None, device=None, dtype=None)
    1. num_embeddings (int) – 嵌入字典的大小
    1. embedding_dim (int) – 每个嵌入向量的大小
    1. padding_idx (int, optional) – 一般每个句子的长度并不一定是等长的, 这时候就需要对较短的句子进行padding, 填充的数据一般是0, 这个时候, 在进行词嵌入的时候就会进行相应的处理, nn.embedding会将填充的映射为0。
    1. max_norm (float, optional) – 如果给定,则范数大于 max_norm 的每个嵌入向量被重新归一化为具有范数 max_norm。
    1. norm_type (float, optional) – 要为 max_norm 选项计算的 p-norm 的 p。 默认 2。
    1. scale_grad_by_freq (boolean, optional) – 如果给定,这将通过小批量中单词频率的倒数来缩放梯度。 默认假。
    1. sparse (bool, optional) – 如果为真,梯度 w.r.t。 权重矩阵将是一个稀疏张量。 有关稀疏渐变的更多详细信息,请参阅注释。
from torch import nn
import torch
embedding = nn.Embedding(10, 3)
input = torch.LongTensor([[1,2,4,5],[4,3,2,9]])
embedding(input)
out:
tensor([[[ 0.3040, -0.3165,  0.0080],
         [ 1.2770, -0.2045,  1.7190],
         [ 1.0553,  0.6021, -3.0911],
         [-0.3720, -0.3444, -0.9037]],

        [[ 1.0553,  0.6021, -3.0911],
         [ 0.4253, -1.2449, -1.1100],
         [ 1.2770, -0.2045,  1.7190],
         [-1.0984,  0.9042,  2.2761]]], grad_fn=<EmbeddingBackward>)

#  指定 padding_idx
embedding = nn.Embedding(10, 3, padding_idx=0)
input = torch.LongTensor([[0,2,0,5]])
embedding(input)
out:
tensor([[[ 0.0000,  0.0000,  0.0000],
         [ 0.9870, -2.0431,  0.4894],
         [ 0.0000,  0.0000,  0.0000],
         [-1.9090, -1.2980, -0.7313]]], grad_fn=<EmbeddingBackward>)

完结。。。


版权声明:本文为weixin_36893273原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。