Превратить список кортежей в двоичные тензоры? - PullRequest
1 голос
/ 28 сентября 2019

У меня есть список кортежей в форме ниже.Данный кортеж представляет собой пару фильмов, которые понравились данному пользователю.Все кортежи, вместе взятые, фиксируют каждую комбинацию лайков фильма, найденную в моих данных.

[(movie_a,movie_b),...(movie_a,movie_b)] 

Моя задача - создавать вложения фильмов, похожие на вложения слов.Идея состоит в том, чтобы обучить один скрытый слой NN, чтобы предсказать наиболее вероятный фильм, который может понравиться любому пользователю, учитывая предоставленный фильм.Как и вложение слов, задача несущественна;это весовая матрица, которую я ищу, которая отображает фильмы на векторы.

Ссылка: https://arxiv.org/vc/arxiv/papers/1603/1603.04259v2.pdf

Всего 19 000 000 кортежей (примеры обучения). Аналогично, в моих данных 9 000 уникальных идентификаторов фильмов.Моей первоначальной целью было создание входной переменной X, где каждая строка представляла уникальный идентификатор фильма, а каждый столбец представлял уникальное наблюдение.В любом данном столбце только одна ячейка будет установлена ​​на 1, а все остальные значения будут установлены на 0.

В качестве промежуточного шага я попытался создать матрицу нулей правильных размеров

X = np.zeros([9000,19000000])

Понятно, что мой компьютер вышел из строя, просто пытаясь выделить достаточно памяти для X.

Существует ли эффективный для памяти способ передачи моего списка значений в PyTorch, такой, что для каждого обучающего примера создается двоичный вектор?

Точно так же я попытался случайным образом отобрать 500 000 наблюдений.Но аналогичным образом, передача 9000 500 000 в np.zeroes () привела к другому сбою.

В моем университете есть доступный сервер GPU, и это моя следующая остановка.Но я хотел бы знать, есть ли способ эффективно использовать память, особенно если я буду использовать общие ресурсы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...