本文简要介绍python语言中 torch.nn.functional.embedding_bag
的用法。
用法:
torch.nn.functional.embedding_bag(input, weight, offsets=None, max_norm=None, norm_type=2, scale_grad_by_freq=False, mode='mean', sparse=False, per_sample_weights=None, include_last_offset=False, padding_idx=None)
input(LongTensor) -将包含索引袋的张量包含到嵌入矩阵中
weight(Tensor) -行数等于最大可能索引 + 1 且列数等于嵌入大小的嵌入矩阵
offsets(LongTensor,可选的) -仅在
input
为 1D 时使用。offsets
确定input
中每个包(序列)的起始索引位置。max_norm(float,可选的) -如果给定,每个范数大于
max_norm
的嵌入向量将被重新归一化为范数max_norm
。注意:这将就地修改weight
。norm_type(float,可选的) -
p
-norm 中的p
用于计算max_norm
选项。默认2
。scale_grad_by_freq(布尔值,可选的) -如果给定,这将通过小批量中单词频率的倒数来缩放梯度。默认
False
。注意:mode="max"
时不支持此选项。mode(string,可选的) -
"sum"
、"mean"
或"max"
。指定减少袋子的方式。默认值:"mean"
sparse(bool,可选的) -if
True
,梯度 w.r.t.weight
将是一个稀疏张量。有关稀疏梯度的更多详细信息,请参阅torch.nn.Embedding
下的注释。注意:mode="max"
时不支持此选项。per_sample_weights(Tensor,可选的) -浮点/双权重的张量,或 None 表示所有权重应为 1。如果指定,
per_sample_weights
必须具有与输入完全相同的形状,并且被视为具有相同的offsets
,如果不是没有。include_last_offset(bool,可选的) -如果
True
,则偏移量的大小等于包的数量 + 1。最后一个元素是输入的大小,或者是最后一个包(序列)的结束索引位置。padding_idx(int,可选的) -如果指定,
padding_idx
处的条目不会影响梯度;因此,padding_idx
处的嵌入向量在训练期间不会更新,即它保持为固定的 “pad”。请注意,padding_idx
处的嵌入向量不包括在缩减范围内。
计算嵌入的
bags
的总和、均值或最大值,而不实例化中间嵌入。有关详细信息,请参阅
torch.nn.EmbeddingBag
。注意
当给定 CUDA 设备上的张量时,此操作可能会产生不确定的梯度。有关详细信息,请参阅重现性。
- 形状:
input
(长张量)和offsets
(长张量,可选)如果
input
是形状(B, N)
的 2D,它将被视为每个固定长度N
的B
袋子(序列),这将返回B
值聚合的方式取决于mode
.offsets
被忽略,在这种情况下需要为None
。如果
input
是形状(N)
的一维,它将被视为多个包(序列)的串联。offsets
必须是一维张量,其中包含input
中每个包的起始索引位置。因此,对于形状为(B)
的offsets
,input
将被视为具有B
包。空包(即长度为 0)将返回由零填充的向量。
weight
(张量):形状(num_embeddings, embedding_dim)
模块的可学习权重per_sample_weights
(张量,可选)。具有与input
相同的形状。output
:形状(B, embedding_dim)
的聚合嵌入值
例子:
>>> # an Embedding module containing 10 tensors of size 3 >>> embedding_matrix = torch.rand(10, 3) >>> # a batch of 2 samples of 4 indices each >>> input = torch.tensor([1,2,4,5,4,3,2,9]) >>> offsets = torch.tensor([0,4]) >>> F.embedding_bag(input, embedding_matrix, offsets) tensor([[ 0.3397, 0.3552, 0.5545], [ 0.5893, 0.4386, 0.5882]]) >>> # example with padding_idx >>> embedding_matrix = torch.rand(10, 3) >>> input = torch.tensor([2, 2, 2, 2, 4, 3, 2, 9]) >>> offsets = torch.tensor([0,4]) >>> F.embedding_bag(input, embedding_matrix, offsets, padding_idx=2, mode='sum') tensor([[ 0.0000, 0.0000, 0.0000], [-0.7082, 3.2145, -2.6251]])
参数:
相关用法
- Python PyTorch embedding用法及代码示例
- Python PyTorch empty_like用法及代码示例
- Python PyTorch empty_strided用法及代码示例
- Python PyTorch emit_nvtx用法及代码示例
- Python PyTorch empty用法及代码示例
- Python PyTorch enable_grad用法及代码示例
- Python PyTorch equal用法及代码示例
- Python PyTorch eq用法及代码示例
- Python PyTorch erfc用法及代码示例
- Python PyTorch exp用法及代码示例
- Python PyTorch expires用法及代码示例
- Python PyTorch effect_names用法及代码示例
- Python PyTorch entr用法及代码示例
- Python PyTorch einsum用法及代码示例
- Python PyTorch eigvals用法及代码示例
- Python PyTorch eigvalsh用法及代码示例
- Python PyTorch expm1用法及代码示例
- Python PyTorch export用法及代码示例
- Python PyTorch exp2用法及代码示例
- Python PyTorch erfinv用法及代码示例
- Python PyTorch eig用法及代码示例
- Python PyTorch eigh用法及代码示例
- Python PyTorch extract_archive用法及代码示例
- Python PyTorch eye用法及代码示例
- Python PyTorch eye_用法及代码示例
注:本文由纯净天空筛选整理自pytorch.org大神的英文原创作品 torch.nn.functional.embedding_bag。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。