天天看點

Debug 路漫漫-04

 1、錯誤使用 cat

要串聯的數組的次元不一緻。

——前面給個初始化即可:

  D = cell(length(trainIdx),1);

  user_itemData = cell(length(trainIdx),1);

 2、

Debug 路漫漫-04
Debug 路漫漫-04

  這個 ixW 是對 winner 進行更新,ixV 是對 loser 進行更新,那第三個式子,要對 yItem(所有Item) 進行更新,也就無區分winner或loser,對所有item 進行更新,并不可以這樣用嗎: D(p{j},2:3 【會提示次元不一緻】

   D 的結構是:user -- winner -- loser (那這邊兩列要怎麼同時更新呢?要注意:win和lose可能有交集的阿 )

   若是這樣:更新它們的交集(亦不行)

Debug 路漫漫-04

   解決辦法: 對 yItem的更新也劃分為winner 和 loser !

Debug 路漫漫-04

 3、

   u是609999 * K,uOnly是62101*K(真實的user個數),想要用uOnly 來填充u。。。

Debug 路漫漫-04

但是這個 把p覆寫了。

解決辦法:放到外面去:

Debug 路漫漫-04

4、

位置 1 的索引超出數組範圍(不能超過 1)。

出錯 FSBPRRankEval (line 21)

s = yU(u,:)*V(candItems,:)'; 

解決辦法: 

Debug 路漫漫-04

5、記憶體不足??

—— pred是1 x k,後面那個算出來是k x 1,兩個累加就是k x k,k還是訓練集的個數, 不爆才怪??

Debug 路漫漫-04

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)。。。。。。。

Debug 路漫漫-04

 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);

——如下: