Pytorch: кодирование категориального признака с помощью nn.Встраивание

#python #pytorch

#python #pytorch

Вопрос:

Я новичок в Pytorch. Я изучил несколько руководств о том, как построить простую модель NN с помощью pytorch, например (этот). Я считаю, что они предпочитают nn.Embedding для кодирования категориальных функций. Мои вопросы: (1) почему бы не использовать одну горячую кодировку? (2) nn.Embedding инициализируется случайным образом, и я думаю, что числовые значения вложений не будут обучены, потому что они обрабатываются как входные. Если nn.Embedding инициализирует категориальные функции случайным образом, окажет ли это негативное влияние на обучение?

Ответ №1:

(1) Вложения обычно имеют меньшую размерность и непрерывны. Это делает их более подходящими для обучения NN.

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

Комментарии:

1. Но я предполагаю, что значения вложений не изменяются во время обучения, потому что функции обрабатываются как входные, что исправлено?

2. @JYY в нейронной сети почти все является входом для следующего уровня. Это не мешает ей быть обучаемой. На самом деле это просто линейный проекционный слой.