本文简要介绍python语言中 torch.nn.EmbeddingBag
的用法。
用法:
class torch.nn.EmbeddingBag(num_embeddings, embedding_dim, max_norm=None, norm_type=2.0, scale_grad_by_freq=False, mode='mean', sparse=False, _weight=None, include_last_offset=False, padding_idx=None, device=None, dtype=None)
num_embeddings(int) -嵌入字典的大小
embedding_dim(int) -每个嵌入向量的大小
max_norm(float,可选的) -如果给定,则范数大于
max_norm
的每个嵌入向量被重新规范化为具有范数max_norm
。norm_type(float,可选的) -p-norm 的 p 为
max_norm
选项计算。默认2
。scale_grad_by_freq(布尔值,可选的) -如果给定,这将通过小批量中单词频率的倒数来缩放梯度。默认
False
。注意:mode="max"
时不支持此选项。mode(string,可选的) -
"sum"
、"mean"
或"max"
。指定减少包的方式。"sum"
计算加权和,同时考虑per_sample_weights
。"mean"
计算包中值的平均值,"max"
计算每个包的最大值。默认值:"mean"
sparse(bool,可选的) -如果
True
,梯度 w.r.t.weight
矩阵将是一个稀疏张量。有关稀疏渐变的更多详细信息,请参阅注释。注意:mode="max"
时不支持此选项。include_last_offset(bool,可选的) -如果
True
,offsets
有一个附加元素,其中最后一个元素等于indices
的大小。这与 CSR 格式匹配。padding_idx(int,可选的) -如果指定,
padding_idx
处的条目不会影响梯度;因此,padding_idx
处的嵌入向量在训练期间不会更新,即它保持为固定的 “pad”。对于新构建的 EmbeddingBag,padding_idx
处的嵌入向量将默认为全零,但可以更新为另一个值以用作填充向量。请注意,padding_idx
处的嵌入向量不包括在缩减范围内。
~EmbeddingBag.weight(Tensor) -从
(num_embeddings, embedding_dim)
的模块的可学习权重。 初始化的形状为计算嵌入的 ‘bags’ 的总和或均值,而不实例化中间嵌入。
对于恒定长度的袋子,没有
per_sample_weights
,没有等于padding_idx
的索引,并且具有 2D 输入,这个类然而,
EmbeddingBag
比使用这些操作链更节省时间和内存。EmbeddingBag 还支持 per-sample 权重作为前向传递的参数。这会在执行
mode
指定的加权缩减之前缩放嵌入的输出。如果per_sample_weights
通过,则唯一支持的mode
是"sum"
,它根据per_sample_weights
计算加权和。例子:
>>> # an EmbeddingBag module containing 10 tensors of size 3 >>> embedding_sum = nn.EmbeddingBag(10, 3, mode='sum') >>> # a batch of 2 samples of 4 indices each >>> input = torch.tensor([1,2,4,5,4,3,2,9], dtype=torch.long) >>> offsets = torch.tensor([0,4], dtype=torch.long) >>> embedding_sum(input, offsets) tensor([[-0.8861, -5.4350, -0.0523], [ 1.1306, -2.5798, -1.0044]]) >>> # Example with padding_idx >>> embedding_sum = nn.EmbeddingBag(10, 3, mode='sum', padding_idx=2) >>> input = torch.tensor([2, 2, 2, 2, 4, 3, 2, 9], dtype=torch.long) >>> offsets = torch.tensor([0,4], dtype=torch.long) >>> embedding_sum(input, offsets) tensor([[ 0.0000, 0.0000, 0.0000], [-0.7082, 3.2145, -2.6251]]) >>> # An EmbeddingBag can be loaded from an Embedding like so >>> embedding = nn.Embedding(10, 3, padding_idx=2) >>> embedding_sum = nn.EmbeddingBag.from_pretrained( embedding.weight, padding_idx=embedding.padding_idx, mode='sum')
参数:
变量:
相关用法
- Python PyTorch EmbeddingBagCollection.state_dict用法及代码示例
- Python PyTorch EmbeddingBag.from_pretrained用法及代码示例
- Python PyTorch EmbeddingBagCollection用法及代码示例
- Python PyTorch EmbeddingBagCollection.named_buffers用法及代码示例
- Python PyTorch Embedding用法及代码示例
- Python PyTorch EmbeddingCollection用法及代码示例
- Python PyTorch Embedding.from_pretrained用法及代码示例
- Python PyTorch ELU用法及代码示例
- Python PyTorch EndOnDiskCacheHolder用法及代码示例
- Python PyTorch Enumerator用法及代码示例
- Python PyTorch ElasticAgent用法及代码示例
- Python PyTorch EtcdServer用法及代码示例
- Python PyTorch EtcdRendezvousHandler用法及代码示例
- Python PyTorch Exponential用法及代码示例
- Python PyTorch frexp用法及代码示例
- Python PyTorch jvp用法及代码示例
- Python PyTorch cholesky用法及代码示例
- Python PyTorch vdot用法及代码示例
- Python PyTorch ScaledDotProduct.__init__用法及代码示例
- Python PyTorch gumbel_softmax用法及代码示例
- Python PyTorch get_tokenizer用法及代码示例
- Python PyTorch saved_tensors_hooks用法及代码示例
- Python PyTorch positive用法及代码示例
- Python PyTorch renorm用法及代码示例
- Python PyTorch AvgPool2d用法及代码示例
注:本文由纯净天空筛选整理自pytorch.org大神的英文原创作品 torch.nn.EmbeddingBag。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。