赞
踩
详见 官方文档
class torch.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)
参数解读
num_embeddings
(int) – 词嵌入矩阵的大小,即 有多少个 词嵌入向量 对应行
embedding_dim
(int) – 每个词嵌入向量的维度 对应列
padding_idx
(int, optional) – 可选参数。如果 指定该参数,则 padding_idx
将不会再 training 中更新,即将保持一个 固定向量不变torch.nn.Embedding 作用
~Embedding.weight (Tensor)
– 维度为 ( n u m _ e m b e d d i n g s , e m b e d d i n g _ d i m ) (num\_embeddings, embedding\_dim) (num_embeddings,embedding_dim) 的可学习权重矩阵,初始化为 N ( 0 , 1 ) N(0,1) N(0,1)
Embedding 输入、输出
*
是 input shape,
H
=
e
m
b
e
d
d
i
n
g
_
d
i
m
H=embedding\_dim
H=embedding_dim例子
>>> # 嵌入矩阵大小 (10, 3),即 10 个向量,每个向量维度为 (3, 1) >>> 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]]) >>> 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]]]) >>> # 使用 padding_idx (这里用 0 填充 <pad> ) >>> embedding = nn.Embedding(10, 3, padding_idx=0) >>> input = torch.LongTensor([[0,2,0,5]]) >>> embedding(input) tensor([[[ 0.0000, 0.0000, 0.0000], [ 0.1535, -2.0309, 0.9315], [ 0.0000, 0.0000, 0.0000], [-0.1655, 0.9897, 0.0635]]]) # 测试 >>> embedding(torch.LongTensor([0])) tensor([[0., 0., 0.]], grad_fn=<EmbeddingBackward>) >>> embedding(torch.LongTensor([2])) tensor([[ 0.1535, -2.0309, 0.9315]], grad_fn=<EmbeddingBackward>)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。