将元组列表转换为二进制张量?

时间:2019-09-27 21:14:36

标签: pytorch

我在下面的表格中有一个元组列表。给定的元组表示给定的用户喜欢的给定的电影对。所有元组一起捕获我数据中发现的电影喜欢的每一个组合。

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

我的任务是创建类似于单词嵌入的电影嵌入。这个想法是训练单个隐藏层NN来预测给定提供的电影,任何用户可能会喜欢的电影。就像单词嵌入一样,这项任务是无关紧要的。这是我追求的权重矩阵,它将电影映射到矢量。

参考:https://arxiv.org/vc/arxiv/papers/1603/1603.04259v2.pdf

总共有19,000,000个元组(训练示例。)同样,我的数据中有9,000个唯一的电影ID。我的最初目标是创建一个输入变量X,其中每一行代表一个唯一的movie_id,每一列代表一个唯一的观察值。在任何给定列中,只有一个单元格将被设置为1,而所有其他值都将被设置为0。

作为中间步骤,我尝试创建尺寸正确的零矩阵

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

可以理解,我的计算机崩溃了,只是试图为X分配足够的内存。

是否有一种内存有效的方式将我的值列表传递到PyTorch中,从而为每个训练示例创建一个二进制向量?

同样,我尝试随机抽样500,000个观察值。但是类似地,将9000,500000传递给np.zeroes()导致了另一次崩溃。

我的大学有可用的GPU服务器,这是我的下一站。但是我想知道是否应该使用一种内存有效的方法,特别是因为我将使用共享资源。

0 个答案:

没有答案