Вектор слова в PyTorch
Класс Embedding хранит таблицу
векторов: номер слова из словаря
превращается в строку чисел
фиксированной длины. В текстовых
задачах такой номер задают
целым числом.
При создании слоя указывают размер словаря и длину вектора. Подадим тензор из нескольких номеров и выведем форму получившихся векторов:
import torch
import torch.nn as nn
table = nn.Embedding(num_embeddings=10, embedding_dim=4)
word_ids = torch.tensor([0, 2, 5])
vectors = table(word_ids)
print(vectors.shape) # выведет torch.Size([3, 4])
На выходе для каждого номера получается отдельный вектор. Число строк совпадает с числом номеров во входном тензоре, а ширина строки равна заданной длине вектора.
import torch
import torch.nn as nn
table = nn.Embedding(20, 8)
word_ids = torch.tensor([3, 7])
vectors = table(word_ids)
print(vectors.shape) # выведет torch.Size([2, 8])
Соберите таблицу на 15 слов
с длиной вектора 6.
Подайте номера 1, 4
и 9 и выведите форму
результата.
Возьмите словарь из 50
позиций и векторы длиной 12.
Преобразуйте один номер 0
и выведите форму строки.
Опишите таблицу на 8 слов
и 3 числа в каждом векторе.
Подайте ряд номеров 2,
5, 5, 1
и выведите форму массива
на выходе.