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)[source] -
Вычисляет суммы, средние значения или максимумы
bagsвстраиваний, не создавая промежуточных встраиваний.См.
torch.nn.EmbeddingBagдля получения более подробной информации.Примечание
Эта операция может создавать недетерминированные градиенты при использовании тензоров на устройстве CUDA. См. Воспроизводимость для получения дополнительной информации.
- Параметры:
-
- input (LongTensor) – Тензор, содержащий пакеты индексов во входной матрице встраиваний
- weight (Tensor) – Матрица встраиваний с числом строк, равным максимальному возможному индексу + 1, и числом столбцов, равным размеру встраиваний
-
offsets (LongTensor, optional) – Используется только когда
inputявляется 1D.offsetsопределяет начальную позицию индекса каждого пакета (последовательности) вinput. -
max_norm (float, optional) – Если задано, каждый вектор встраивания с нормой, большей, чем
max_norm, перенормируется, чтобы иметь нормуmax_norm. Примечание: это изменитweightнепосредственно. -
norm_type (float, optional) –
pвp-норме для вычисленияmax_normварианта. Значение по умолчанию2. -
scale_grad_by_freq (bool, optional) – Если задано, это масштабирует градиенты с обратной частотой слов в мини-пакете. Значение по умолчанию
False. Примечание: этот параметр не поддерживается, когдаmode="max". -
mode (str, optional) –
"sum","mean"или"max". Определяет способ суммирования пакетов. Значение по умолчанию:"mean". -
sparse (bool, optional) – Если
True, градиент по отношению кweightбудет разреженным тензором. См. Примечания в разделеtorch.nn.Embeddingдля получения более подробной информации о разреженных градиентах. Примечание: этот параметр не поддерживается, когдаmode="max". -
per_sample_weights (Tensor, optional) – тензор весов с плавающей запятой / двойной точности, или None для обозначения того, что все веса должны приниматься равными 1. Если указано,
per_sample_weightsдолжен иметь точно такую же форму, что и входной тензор, и обрабатывается так, как если бы имел те жеoffsets, если они не равны None. -
include_last_offset (bool, optional) – Если
True, размер offsets равен количеству пакетов + 1. Последний элемент — размер входного тензора или конечная позиция индекса последнего пакета (последовательности). -
padding_idx (int, optional) – Если задано, записи в
padding_idxне вносят вклад в градиент; следовательно, вектор встраивания в позицииpadding_idxне обновляется во время обучения, т.е. он остается неизменным «заполнителем». Обратите внимание, что вектор встраивания в позицииpadding_idxисключается из вычисления.
- Тип возвращаемого значения:
- Форма:
-
-
input(LongTensor) иoffsets(LongTensor, optional)- Если
inputявляется 2D с формой(B, N), он будет обрабатываться какBпакеты (последовательности) каждый фиксированной длиныN, и это вернётBзначения, агрегированные в зависимости отmode.offsetsигнорируется и должно бытьNoneв этом случае. - Если
inputявляется 1D с формой(N), он будет обрабатываться как объединение нескольких пакетов (последовательностей).offsetsдолжен быть 1D тензором, содержащим начальные позиции индексов каждого пакета воinput. Следовательно, дляoffsetsс формой(B),inputбудет представлен как имеющийBпакетов. Пустые пакеты (т. е. имеющие длину 0) будут возвращать векторы, заполненные нулями.
- Если
-
weight(Tensor): обучимые веса модуля с формой(num_embeddings, embedding_dim) -
per_sample_weights(Tensor, optional). Имеет такую же форму, как и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]])
© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/1.13/generated/torch.nn.functional.embedding_bag.html