本文簡要介紹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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。