Spec-Zone.ru › PyTorch 2

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

Tensor

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

Spec-Zone.ru

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