Embedder

Danger

Документирование модуля не завершено и может содержать неточности.

Описание

Info

Родительский класс: Module

Производные классы: -

Данный модуль реализует слой вычисления эмбеддинга. В данном случае под эмбеддингом подразумевается векторное представление слов.

Подробнее о слоях эмбеддинга можно почитать здесь, здесь и здесь.

Инициализация

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.

>>> 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))

>>> data
[[6 5]]
Сформировали строку, состоящую из двух слов (заданной длины последовательности).

Теперь инициализируем экземпляр класса с заданными параметрами и подаем ему на вход данные.

>>> embedder = Embedder(vocabsize, sentlength, embsize)
>>> embedder(data)

[[[-0.69238704 -0.60033077 -0.9100485   0.56284255]
  [-0.36766726 -0.71736836 -0.71524036 -0.03437549]]]
Получили векторные представления сформированных слов. Каждое слово кодируется 4 действительными числами - согласно указанному размеру эмбеддинга.