电影推荐算法2

news/2024/5/19 23:41:14 标签: 推荐算法, 深度学习, 算法

模型创建

title _ count, title _ set, genres2int, features, targets _ values, ratings, users, movies, data, movies _ orig, users _ orig = pickle.load (open (‘preprocess.p’, mode = ‘rb’))

加载数据后定义神经网络的模型结构:
1)定义参数
相关代码如下:

在这里插入图片描述
在这里插入图片描述
3)定义用户嵌入矩阵
在预处理数据时将UserID、MovieID的字段转成数字,当作嵌入矩阵的索引,在网络的第一层使用嵌入层,维度是(N,32)和(N,16),其中N是电影总数。定义用户嵌入矩阵的相关代码如下:在这里插入图片描述
4)定义电影嵌入矩阵
相关代码如下:在这里插入图片描述
5)定义电影类型嵌入矩阵
有时一个电影有多个类型,从嵌入矩阵索引出来是一个(n,32)的矩阵,这里的n是指某部电影所包含的类型。因为有多个类型,所以要将这个矩阵求和,变成(1,32)的向量。相关代码如下:在这里插入图片描述
电影名的处理比较特殊,未使用循环神经网络,而是用了文本卷积网络。网络的第一层是词嵌入层,由每个单词的嵌入向量组成矩阵。第二层使用多个不同尺寸(窗口大小)的卷积核在嵌入矩阵上做卷积,窗口大小指的是每次卷积覆盖几个单词。这里与图像做卷积不同,图像卷积通常用2×2、3×3、5×5的尺寸,而文本卷积要覆盖整个单词的嵌入向量,尺寸是单词数、向量维度,例如,每次滑动3、4或5个单词。第三层网络是最大池化得到一个长向量,第四层使用丢弃做正则化,得到电影Title的特征。相关代码如下:在这里插入图片描述
7)全连接层
从嵌入层索引出特征后,传入全连接层,将输出再次传入全连接层,模型结构如图4-11所示,最终分别得到(1,200)的用户和电影两个特征向量。
在这里插入图片描述

8)定义计算图
目的是训练出用户特征和电影特征,在实现推荐功能时使用。得到这两个特征以后,可以选择任意的方式来拟合评分。对用户特征和电影特征两个(1,200)向量做乘法,将结果与真实评分做回归,采用MSE优化损失。相关代码如下:

.模型训练
定义超参数的代码如下:其中,一个batch就是在一次前向/后向传播过程用到的训练样例数量,训练5轮,每轮第一个batch_size为3125,作为训练集,训练步长为20,第二个batch_size为781,作为测试集,训练步长为20,训练集训练结果如图4-12所示,测试集训练结果如图4-13所示。

通过观察训练集和测试集损失函数的大小来评估模型的训练程度,进行模型训练的进一步决策。一般来说,训练集和测试集的损失函数不变且基本相等为模型训练的较佳状态。可以将训练过程中保存的损失函数以图片的形式表现出来,方便观察,相关代码如下:在这里插入图片描述
获取特征矩阵
本部分包括定义函数张量、生成电影特征矩阵、生成用户特征矩阵。
1)定义函数用于获取保存的张量
相关代码如下:在这里插入图片描述


http://www.niftyadmin.cn/n/297457.html

相关文章

《编程思维与实践》1052.删除注释

《编程思维与实践》1052.删除注释 题目 思路 将所有可能的情况枚举出来: 1.在有效的块注释内: 有效是指块注释不在引号内,如char *s" \ * xxxxxxx *\ "就不是一个有效的块注释, 这种情况下跳过之后所有的内容,直到遇到*/后才重新判断情况; 2.在有效的行注释内: 同理…

Android TTS播报音频并且配合AudioManager压低其他音频声音

文章目录 使用场景通过 TTS 播放文本信息创建 TTS下载 TTSTTS 有 Voice 语音包TTS 播放语音 音频焦点管理请求音频焦点释放焦点 通过 AudioManager 增加或者减少音量AudioManager 常用的 API 使用场景 1. 拦截三方导航返回的即将播放的文本信息,并且加以处理然后播报…

日志分析工具

目录 一 背景 二 功能需求 三 软件界面开发方式 四 工程文件结构 五 源代码

【C++】动态规划

参考博客:动态规划详解 1. 什么是动态规划 动态规划(英语:Dynamic programming,简称 DP),是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问…

【算法】——全排列算法讲解

前言: 今天,我给大家讲解的是关于全排列算。我会从三个方面去进行展开: 首先,我会给大家分析关于全排列算法的思想和定义;紧接着通过手动实现出一个全排列代码来带大家见见是怎么实现的;最后我会给出两道题…

STM32:利用PWM波控制飞盈电调过程和注意事项

STM32:利用PWM波控制电调过程和注意事项 在进行模型控制的过程中,如四旋翼无人机等,需要用到电机,这些电机需要通过电调来控制电机的转速。在电调模块中带有的说明书一般都是利用遥控器进行控制,有些情况需要自己通过…

Spring中使用注解注入Bean的常用方法

在Spring框架中,有多种方式可以将Bean注入到应用程序中。其中最常用的方式之一是使用注解。使用注解注入Bean可以使代码更加简洁,同时也可以提高代码的可读性和可维护性。本文将介绍Spring中使用注解注入Bean的方法,并提供一些代码实例。 注…

第二章--第二节--自然语言处理(NLP)

一、引言 自然语言处理(NLP)是人工智能领域的重要分支,旨在让计算机能够理解、分析、生成人类语言。随着大数据和深度学习技术的快速发展,NLP在文本分类、情感分析、机器翻译等方面取得了巨大进展。本文将介绍NLP的基本任务、技术和应用,并探讨NLP在ChatGPT等智能对话系统…