#python #pytorch
#python #pytorch
Вопрос:
Я новичок в Pytorch. Я изучил несколько руководств о том, как построить простую модель NN с помощью pytorch, например (этот). Я считаю, что они предпочитают nn.Embedding для кодирования категориальных функций. Мои вопросы: (1) почему бы не использовать одну горячую кодировку? (2) nn.Embedding инициализируется случайным образом, и я думаю, что числовые значения вложений не будут обучены, потому что они обрабатываются как входные. Если nn.Embedding инициализирует категориальные функции случайным образом, окажет ли это негативное влияние на обучение?
Ответ №1:
(1) Вложения обычно имеют меньшую размерность и непрерывны. Это делает их более подходящими для обучения NN.
(2) Они должны быть обучены, если вы только что их инициализировали. Они считаются частью вашей модели, что-то вроде соединения, соединяющего одноразовые значения в кодировке с остальной частью вашей модели.
Комментарии:
1. Но я предполагаю, что значения вложений не изменяются во время обучения, потому что функции обрабатываются как входные, что исправлено?
2. @JYY в нейронной сети почти все является входом для следующего уровня. Это не мешает ей быть обучаемой. На самом деле это просто линейный проекционный слой.