Skip to content

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.

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 действительными числами - согласно указанному размеру эмбеддинга.