РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗pytoSpAtPs 72 of 82 menu
◀ ▶

Позиционные числа в PyTorch

Позиционные числа добавляют к векторам слов сведения о месте в ряду. Без них модель не отличит один и тот же набор слов в разном порядке.

Часто таблицу позиций заполняют синусами и косинусами: для каждого номера места и каждой координаты вектора берут разные частоты. Соберём такую таблицу и выведем её форму:

import math import torch import torch.nn as nn max_len = 5 width = 8 table = torch.zeros(max_len, width) position = torch.arange(0, max_len, dtype=torch.float).unsqueeze(1) div_term = torch.exp( torch.arange(0, width, 2).float() * (-math.log(10000.0) / width) ) table[:, 0::2] = torch.sin(position * div_term) table[:, 1::2] = torch.cos(position * div_term) print(table.shape) # выведет torch.Size([5, 8])

Строки таблицы соответствуют номерам мест, столбцы - координатам вектора. Прибавим её к пакету эмбеддингов и выведем форму суммы:

import math import torch import torch.nn as nn max_len = 5 width = 8 table = torch.zeros(max_len, width) position = torch.arange(0, max_len, dtype=torch.float).unsqueeze(1) div_term = torch.exp( torch.arange(0, width, 2).float() * (-math.log(10000.0) / width) ) table[:, 0::2] = torch.sin(position * div_term) table[:, 1::2] = torch.cos(position * div_term) embeddings = torch.randn(3, max_len, width) mixed = embeddings + table.unsqueeze(0) print(mixed.shape) # выведет torch.Size([3, 5, 8])

Постройте таблицу на 6 мест и ширину 10 через синус и косинус и выведите форму таблицы.

Возьмите ряд из 4 векторов ширины 8 и пакет 2. Прибавьте к нему подходящую по длине таблицу позиций и выведите форму суммы.

Сделайте таблицу для 8 шагов и 6 координат, сложите с случайным тензором пакета 3 и выведите форму результата.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить