Выбор функции потерь для lstm, обученного на векторах word2vec, когда целью является вектор тех же размеров

У меня есть lstm, который я использую как генератор последовательности, обученный векторам word2vec. Предыдущая реализация произвела распределение вероятностей для всех различных меток. Для каждого слова в словаре был свой ярлык. Эта реализация использовала CrossEntropyLoss Pytorch. Теперь я хочу изменить это, чтобы lstm выводил вектор, который имеет те же размеры, что и векторы, используемые для обучения. Таким образом, я мог использовать меру эвклидовых расстояний, чтобы сопоставить остроумие с близлежащими векторами в словаре. Проблема в том, что для этого мне нужно использовать другую функцию потерь, потому что CrossEntropyLoss подходит для классификаторов, а не для задач регрессии.

Я попытался изменить формат целевого вектора, но функция CrossEntropyLoss torch требует ввода целых чисел, а у меня есть вектор слов. Посмотрев на несколько вариантов, кажется, что Cosine Embedding Loss может быть хорошей идеей, но я не понимаю, как это работает и какой ввод требуется.

Я уже изменил свой полностью подключенный слой на выходные векторы тех же размеров, что и вложения Word, используемые для обучения:

nn.Linear(in_features=self.cfg.lstm.lstm_num_hidden,out_features=self.cfg.lstm.embedding_dim,bias=True)

Будем очень признательны за любые советы и примеры.

Источник: ledsshop.ru

Стиль жизни - Здоровье!