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);
——如下: