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