Создание входных эмбеддингов
Пора приступить к созданию собственной модели трансформера! Первый шаг — преобразование входных идентификаторов токенов в эмбеддинги (векторные представления).
Вы определите класс InputEmbeddings со следующими параметрами:
vocab_size: размер словаря моделиd_model: размерность входных эмбеддингов
Библиотеки torch и math, а также модуль torch.nn под псевдонимом nn уже импортированы. Они будут использоваться во всех упражнениях курса.
Это упражнение является частью курса
Трансформерные модели с PyTorch
Инструкции к упражнению
- Присвойте атрибутам размерности модели и размера словаря значения аргументов
d_modelиvocab_sizeсоответственно. - Создайте экземпляр слоя эмбеддингов.
- Верните эмбеддинги, умноженные на квадратный корень из
self.d_model. - Создайте экземпляр
InputEmbeddingsс параметрамиvocab_sizeравным 10 000 иd_modelравным 512, и примените его кtoken_ids.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
class InputEmbeddings(nn.Module):
def __init__(self, vocab_size: int, d_model: int) -> None:
super().__init__()
# Set the model dimensionality and vocabulary size
self.d_model = ____
self.vocab_size = ____
# Instantiate the embedding layer
self.embedding = ____
def forward(self, x):
# Return the embeddings multiplied by the square root of d_model
return ____
# Instantiate InputEmbeddings and apply it to token_ids
embedding_layer = ____
output = ____
print(output.shape)