Spec-Zone.ru › PyTorch 1

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 исключается из вычисления.
Тип возвращаемого значения:

Tensor

Форма:
  • 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API