Embedder¶
Danger
Документирование модуля не завершено и может содержать неточности.
Описание¶
Данный модуль реализует слой вычисления эмбеддинга. В данном случае под эмбеддингом подразумевается векторное представление слов.
Подробнее о слоях эмбеддинга можно почитать здесь, здесь и здесь.
Инициализация¶
def __init__(self, vocabulary, sentlength, embsize, onVocabulary=None, initscheme="uniform", wscale=1.0,
learnable=True, name=None):
Параметры
Параметр | Возможные типы | Описание | По умолчанию |
---|---|---|---|
vocabulary | int | Размер словаря | - |
sentlength | int | Длина входной последовательности текста | - |
embsize | int | Размерность эмбеддинга | - |
onVocabulary | object | Параметр, отвечающий за формирование эмбеддинга готовому словарю | None |
initscheme | Union[tuple, str] | Указывает схему инициализации весов слоя (см. createTensorWithScheme). | None -> ("xavier_uniform", "in") |
wscale | float | Дисперсия случайных весов слоя | 1.0 |
learnable | bool | Возможность дообучения слоя | True |
name | str | Имя слоя | None |
Пояснения
sentlength
- максимальная длина входной последовательности. Фиксированное число, обычно выбирается по длине максимального предложения. Предложения с меньшим количеством символов обычно перед подачей в слой эмбеддинга дозаполняются паддинговыми значениями до максимальной длины.
Примеры¶
Необходимые импорты.
import numpy as np
from PuzzleLib.Backend import gpuarray
from PuzzleLib.Modules import Embedder
Инициализируем входные параметры и тензор данных.
Important
gpuarray
необходим для правильного размещения тензора на GPU.
np.random.seed(123)
batchsize, sentlength, embsize = 1, 2, 4
vocabsize = 7
data = gpuarray.to_gpu(np.random.randint(low=-1, high=vocabsize, size=(batchsize, sentlength), dtype=np.int32))
print(data)
[[5 4]]
Сформировали строку, состоящую из двух слов (заданной длины последовательности).
Теперь инициализируем экземпляр класса с заданными параметрами и подаем ему на вход данные.
embedder = Embedder(vocabsize, sentlength, embsize)
print(embedder(data))
[[[ 0.69886357 0.44891065 0.22204702 0.44488677]
[-0.6490965 0.06310274 0.06365518 0.26880193]]]
Получили векторные представления сформированных слов. Каждое слово кодируется 4 действительными числами - согласно указанному размеру эмбеддинга.