日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pytorch 笔记: 协同过滤user item bias 实现

發布時間:2025/4/5 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pytorch 笔记: 协同过滤user item bias 实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0 原理部分

?

這里希望實現推薦系統筆記:無任何限制的矩陣分解_UQI-LIUWJ的博客-CSDN博客?中的兩個bias

也就是我們希望用以下這兩個矩陣的積來近似觀測矩陣

1 導入庫 & 數據集處理

import torcha_r=np.array([[1,1],[1,2],[1,3],[1,4]]) b_r=np.array([[4,3,2,1],[1,1,1,1]]) m_r=torch.Tensor(a_r@b_r)''' 我們希望我們最終能夠學到a_r中的第二列,b_r中的第一行 '''x=torch.arange(4)

2 模型部分

class Bias_MF(torch.nn.Module):def __init__(self):super(Bias_MF,self).__init__()self.f_a=torch.nn.Embedding(4,1)self.f_b=torch.nn.Embedding(4,1)def forward(self,x):a_x=self.f_a(x)b_x=self.f_b(x)#分別學習到第一個bias向量和第二個bias向量ones=torch.ones((4,1))self.a=torch.cat((ones,a_x),1)self.b=torch.cat((b_x,ones),1)print(self.a,'\n',self.b.T)return torch.matmul(self.a,self.b.T)

3 創建模型 & 訓練模型

bias=Bias_MF()optimizer=torch.optim.Adam(bias.parameters(),lr=0.2) #優化函數loss_func=torch.nn.MSELoss() #損失函數 for epoch in range(1000):prediction=bias(x)loss=loss_func(prediction,m_r)optimizer.zero_grad()loss.backward(retain_graph=True)optimizer.step()#pytorch老三樣

4 結果比較

bias.a @ bias.b.T,a_r@b_r ''' (tensor([[5.0000, 4.0000, 3.0000, 2.0000],[6.0000, 5.0000, 4.0000, 3.0000],[7.0000, 6.0000, 5.0000, 4.0000],[8.0000, 7.0000, 6.0000, 5.0000]], grad_fn=<MmBackward>),array([[5, 4, 3, 2],[6, 5, 4, 3],[7, 6, 5, 4],[8, 7, 6, 5]])) '''

可以很好地學到結果

總結

以上是生活随笔為你收集整理的pytorch 笔记: 协同过滤user item bias 实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。