215 похожих чатов

Ребята, нужна помощь/совет (лонгрид, извините) Решаю задачу разработки рекомендательной системы на

основе трансформера на открытом датасете MovieLens, задачу сам себе поставил для обучения

Оговорюсь, ранее не обучал трансформеры и не работал с PyTorch

Для тех кто не знаком с датасетом, дам краткое описание: там три таблички, табличка с фильмами и жанрами, табличка с пользователями и информацией по ним (пол, возраст, род деятельности) и табличка с оценками фильмов пользователями (что пользователь смотрел, когда и какую оценку по пятибальной шкале поставил).

Данные я подготовил следующим образом: объединил таблицы и сгруппировал данные по пользователям, для каждого пользователя отсортировал историю просмотров с оценками в хронологическом порядке по timestamp, организовал цепочки фильмов и оценок со сдвигом для обучения (пример: пользователь посмотрел 20 фильмов, я нарезаю данные окном 10, 9 фильмов в цепочке, 10-й как target, итого 11 цепочек).

Теперь как я вижу трансформер

Input для модели: цепочки фильмов с жанрами и оценками, которые пользователь смотрел, данные пользователя, жанр и id фильма, который требуется оценить.
Output модели: оценка нового фильма.

Теперь где я застрял:
1. Как правильно подготовить эмбеддинги и подать данные на вход трансформеру? Я вижу для себя три разных непересекающихся домена данных: данные пользователей, данные фильмов и истории просмотров. Не уверен, что корректно схлопывать все в один тензор torch.cat(tensors), не смотря на то, что я организовал одинаковую размеренность векторов. Но как обучать эмбеддинги параллельно и независимо я не знаю.

2. Как правильно заэмбеддить истории просмотров фильмов с их жанрами и истории оценок? В отличие от данных пользователя это цепочки

3. Как правильно поработать с жанрами? Была идея обучить отдельную сетку на жанрах, чтобы получить эмбэддинги и не работать с бинарным вектором размерностью 17 (всего 18 уникальных жанров). Но возможно эти эмбецдинги также обучатся в трансформере параллельно с данными пользователя и цепочками

спасибо, если ты дочитал до этого момента, буду рад любой помощи или совету 🙏

1 ответов

18 просмотров

а можно спросить одно, а зачем тебе тут торч?

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
Подскажите, а есть vault lite или ченить такое?) А то нужен вольт для похода в вольт, но весит он ~500 мб) как-то многовато для парочки запросов ))
Alexandr Orloff
17
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Карта сайта