Звучит тривиально для 1D, но как насчет 3D-тензора (или любого *D-тензора)?

Мы понимаем суть Linear Layer через изображения ниже:

Входной – это вектор из 3 элементов, который при преобразовании W даетвектор Выходной из 4 элементов. W — это матрица, которая инициализируется и изучается как часть этого линейного слоя после завершения обучения.

А как насчет преобразования трехмерного тензора:

В контексте НЛП типичная входная матрица имеет 3 измерения, соответствующие пакету, длине последовательности и размеру внедрения.

В таких случаях,

Линейный слой воздействует на последнее измерение (встраивающее измерение) входной матрицы, преобразуя только вложения из одного размера в другой.

Это означает, что в приведенном выше примере матрица 2x2x3 представляет собой набор из 4 (2*2) векторов, каждый из которых имеет размер 3.

Затем линейный слой применяет преобразование к каждому из этих 4 векторов, как показано ниже. Каждый вектор преобразуется из размера 3 в размер 4.

Представьте преобразованные векторы, откатывающиеся назад, чтобы сформировать исходную матрицу:

Таким образом, общая трансформация выглядит так:

API nn.Linear в Pytorch упоминает in_features и out_features, которые относятся к форме последнего измерения (входной и выходной матриц).

В нашем примере: in_features (D) → 3 и out_features (D’) → 4

Вывод:
форма входной матрицы не имеет значения. Это только последнее измерение, которое трансформируется

Первоначально опубликовано по адресу:



Подпишитесь на Intuitive Shorts (информационный бюллетень Substack), чтобы прочитать краткие и интуитивно понятные обзоры концепций ML/NLP/DS.

СТАТЬ ПИСАТЕЛЕМ на MLearning.ai