Примечания к обзору Pytorch – использование nn.Embedding()

Оглавление

1 — Использование nn.Embedding()

2 -- Индикация экземпляра:

3 — Проблемы с вниманием


1 — Использование nn.Embedding()

import torch.nn as nn

embedding = nn.Embedding(num_embeddings = 10, embedding_dim = 256)

nn.Embedding() генерирует весовую матрицу веса формы (num_embeddings, embedding_dim), что означает генерацию векторов внедрения num_embeddings с размером embedding_dim;

Форма входных данных: (batch_size, Seq_len), пакет_size указывает количество выборок (количество предложений NLP), а Seq_len указывает длину последовательности (количество слов в каждом предложении);

Выходные данные nn.Embedding(input) имеют размер формы (batch_size, Seq_len, embedding_dim);

2 -- Индикация экземпляра:

① Код:

import torch
import torch.nn as nn

if __name__ == "__main__":
    input = torch.randint(low = 0, high = 5, size = (2, 9))
    input = torch.LongTensor(input)
    embedding = nn.Embedding(num_embeddings=6, embedding_dim = 3)
    output = embedding(input)
    print("input.shape:", input.shape) # (2, 9) 2个句子,9个单词
    print("embedding.shape:", embedding.weight.shape) # (6, 3) 
    print("output.shape", output.shape) # (2, 9, 3) 2个句子,9个单词,每个单词用一个3维的向量表示

    print("input:", input) 
    print("embedding:", embedding.weight) 
    print("output:", output)


    print("All Done !")

② Анализ:

Функция вывода = embedding(input) предназначена для представления каждого слова вектором размера embedding_dim, поэтому для входных данных (batch_size, Seq_len) выходные данные имеют размер тензора (batch_size, Seq_len, embedding_dim).

При выборе вектора размера embedding_dim для представления он выбирается в соответствии с данными каждого слова; например, на рисунке ниже представления данных двух слов в первом предложении равны 3 (обозначены красным прямоугольником). , и все соответствующие индексы равны. Если он равен 4, для представления должен быть выбран вектор внедрения, индекс которого равен 4 (обозначен зеленым полем , поэтому векторы внедрения двух слов в окончательном выводе являются то же самое (обозначено желтым прямоугольником ).

3 — Проблемы с вниманием

① Входные данные nn.Embedding() должны быть  тензором типа LongTensor ;

② Во входных данных размер данных (крайняя разница) не может превышать размер num_embeddings при инициализации nn.Embedding(), то есть индекс, соответствующий данным, не может быть больше, чем num_embeddings;

Supongo que te gusta

Origin blog.csdn.net/weixin_43863869/article/details/128200988
Recomendado
Clasificación