【发布时间】:2020-01-29 20:49:39
【问题描述】:
对于一个作业,我需要创建一个使用提供的损失函数的电影推荐系统:
sum(????i=1,M) ????sum(j=1,M) indicator[i̸=j](viT vj − Xi,j )**2
这意味着,两个电影嵌入之间的点积 Vi 和 Vj 应该非常接近 Xi,j。其中 Xi,j 是同时喜欢电影 i 和电影 j 的用户的总和。指标函数省略了 i == j 的条目,(设置为 0。)
分配可交付成果是来自隐藏层的权重矩阵。它的尺寸应该是 9724x300,其中有 9724 个唯一的电影 ID,以及 300 个神经元。 300 是任意选择,受 Google 的 word2vec 中使用 300 个神经元的影响。
我有什么:
- source_data:行是用户,列是电影。给定单元格中的 1 表示相应的用户喜欢相应的电影(不喜欢 = 0。)
- preprocessed_data:source_data 自身转置的矩阵乘法。 (即每个单元格都是喜欢电影 i 和 j 的用户的总和。对角线条目对我没有用,因为它们只是喜欢一部电影的用户的总和。)
我被困在哪里:
- 不知道如何根据 i 和 j 定义我自己的损失函数,它可以将 preprocessed_data 中喜欢电影 i 和 j 的用户的总和与隐藏层权重张量中的行 i 和 j 进行比较。
- 不确定如何将我的数据组织成 X 和 y 张量,以使数据适合损失函数。
【问题讨论】:
标签: pytorch loss-function recommender-systems