1、错误使用 cat
要串联的数组的维度不一致。
——前面给个初始化即可:
D = cell(length(trainIdx),1);
user_itemData = cell(length(trainIdx),1);
2、
这个 ixW 是对 winner 进行更新,ixV 是对 loser 进行更新,那第三个式子,要对 yItem(所有Item) 进行更新,也就无区分winner或loser,对所有item 进行更新,并不可以这样用吗: D(p{j},2:3 【会提示维度不一致】
D 的结构是:user -- winner -- loser (那这边两列要怎么同时更新呢?要注意:win和lose可能有交集的阿 )
若是这样:更新它们的交集(亦不行)
解决办法: 对 yItem的更新也划分为winner 和 loser !
3、
u是609999 * K,uOnly是62101*K(真实的user个数),想要用uOnly 来填充u。。。
但是这个 把p覆盖了。
解决办法:放到外面去:
4、
位置 1 的索引超出数组范围(不能超过 1)。
出错 FSBPRRankEval (line 21)
s = yU(u,:)*V(candItems,:)';
解决办法:
5、内存不足??
—— pred是1 x k,后面那个算出来是k x 1,两个累加就是k x k,k还是训练集的个数, 不爆才怪??
6、无法执行赋值,因为左侧和右侧的元素数目不同。
出错 NCR_AMF_nobias_baseline>graded_solver (line 168)
pred(pr) =(exp(u(:,1))./sum(exp(u(:,1))).*(exp(theta)*v(:,1)+v(:,2:end)));
—— pred(pr)是一个数, 右边是个向量,(only say once ==)
exp(u(:,1)) kx1;sum() 1x1;exp() 1x1; v(:,1) K x 1; v(:,2:end) K x (end-1)。。。
假设v的K和u的k一样,即使前面点乘了,除过去,出来的结果也是最后那个k x (end-1)。。。。。。。
7、
无法执行赋值,因为左侧的索引与右侧的大小不兼容。
出错 NCR_AMF_nobias_baseline>graded_solver (line 157)
ixV(:,m) =
(exp(u(:,m)).*exp(theta)+sum(exp(u),2)-exp(u(:,m)))./sum(exp(u),2);
——如下: