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является одномерным.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, если таковые есть. -
include_last_offset (bool, optional) – если
True, размер offsets равен количеству пакетов + 1. Последний элемент представляет собой размер входных данных или конечную позицию индекса последнего пакета (последовательности). -
padding_idx (int, optional) – Если задано, записи в
padding_idxне вносят вклад в градиент; следовательно, вектор вложения вpadding_idxне обновляется во время обучения, т.е. остается фиксированным «заполнителем». Обратите внимание, что вектор вложения вpadding_idxисключается из суммирования.
- Тип возвращаемого значения
- Форма:
-
-
input(LongTensor) иoffsets(LongTensor, optional)- Если
inputявляется двумерным тензором формы(B, N), он будет рассматриваться какBпакетов (последовательностей) фиксированной длиныN, и это вернётBзначений, агрегированных способом, зависящим отmode.offsetsигнорируется и должно бытьNoneв этом случае. - Если
inputявляется одномерным тензором формы(N), он будет рассматриваться как конкатенация нескольких пакетов (последовательностей).offsetsдолжен быть одномерным тензором, содержащим начальные позиции индексов каждого пакета вinput. Таким образом, дляoffsetsформы(B),inputбудет представлен как содержащийBпакетов. Пустые пакеты (т.е. пакеты нулевой длины) будут иметь возвращаемые векторы, заполненные нулями.
- Если
-
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/2.1/generated/torch.nn.functional.embedding_bag.html