pytorch 笔记: 协同过滤user item bias 实现
生活随笔
收集整理的這篇文章主要介紹了
pytorch 笔记: 协同过滤user item bias 实现
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
0 原理部分
?
這里希望實現(xiàn)推薦系統(tǒng)筆記:無任何限制的矩陣分解_UQI-LIUWJ的博客-CSDN博客?中的兩個bias
也就是我們希望用以下這兩個矩陣的積來近似觀測矩陣
1 導入庫 & 數(shù)據(jù)集處理
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)''' 我們希望我們最終能夠?qū)W到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 創(chuàng)建模型 & 訓練模型
bias=Bias_MF()optimizer=torch.optim.Adam(bias.parameters(),lr=0.2) #優(yōu)化函數(shù)loss_func=torch.nn.MSELoss() #損失函數(shù) 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 結(jié)果比較
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]])) '''可以很好地學到結(jié)果
總結(jié)
以上是生活随笔為你收集整理的pytorch 笔记: 协同过滤user item bias 实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pytorch 笔记: DQN(expe
- 下一篇: pandas 笔记:聚合函数agg