RS学习1

本文介绍了如何通过git clone和python setup.py install的方式安装torch-rechub库,并详细讲解了FM算法模型的实现。重点在于FM模型的构造和forward函数,适合深度学习推荐系统的初学者。
摘要由CSDN通过智能技术生成

torch-rechub安装

#最新版(推荐)
1. git clone https://github.com/datawhalechina/torch-rechub.git
2. cd torch-rechub
3. python setup.py install

安装过程中遇到问题:python setup.py install

执行 python3 setup.py install可以成功安装

深度学习推荐算法框架

FM算法总结

class FMModel(nn.Module):
    
    def __init__(self, word_counts, embed_dim):
        super(FMModel, self).__init__()
        self.embedding = nn.Embedding(word_counts, embed_dim)
        self.weight = nn.Embedding(word_counts, 1)
    
    def forward(self, features, index):
        # features: [64,39], embed:[64,39,16], weight:[64,39,1]
        index = torch.tensor(index)
        weights = self.weight(index)
        embed = self.embedding(index)
        first_embed = torch.mul(weights, features.reshape(weights.shape))
        # first_embed = first_embed.squeeze(2)
        # first_sum: [batch_size, 1]
        first_sum = torch.sum(first_embed, dim=1, keepdim=False)
        fm_embed = torch.mul(embed, features.reshape(weights.shape))
        square_sum = torch.pow(torch.sum(fm_embed, dim=1, keepdim=True), 2)
        sum_square = torch.sum(fm_embed * fm_embed, dim=1, keepdim=True)
        # cross_term: [batch_size, 1, embed_dim]
        cross_term = square_sum - sum_square
        # cross_sum: [batch_size, 1]
        cross_sum = 0.5 * torch.sum(cross_term, dim=2, keepdim=False)
        return first_sum + cross_sum

model = FMModel(train_data['feat_dim'], 16) 

# 对离散特征求embedding,实际上计算的是公式中v的值,k就是embedding的长度。线性部分文章中介绍是用one-hot,对离散值的处理也是分别给每个对应的值构建一个k=1的embedding

参考文献

​​​​​​Factorization Machines 学习笔记(一)预测任务_皮果提的博客-CSDN博客

https://blog.csdn.net/wuzhongqiang/category_10128687.html?spm=1001.2014.3001.5482

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值