У меня есть список кортежей в форме ниже.Данный кортеж представляет собой пару фильмов, которые понравились данному пользователю.Все кортежи, вместе взятые, фиксируют каждую комбинацию лайков фильма, найденную в моих данных.
[(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, и это моя следующая остановка.Но я хотел бы знать, есть ли способ эффективно использовать память, особенно если я буду использовать общие ресурсы.