【Tensorflow 2.12 电影推荐项目搭建】

2023-09-17 22:11:50

学习笔记

Tensorflow 2.12 电影推荐项目搭建记录~

Tensorflow是谷歌开源的机器学习框架,可以帮助我们轻松地构建和部署机器学习模型。这里记录学习使用tensorflow来搭建一个电影项目demo,包含召回模型搭建、排序模型搭建,以及整合两个模型进行完整的推荐。
相关文章:
电影推荐-召回模型
电影推荐-排序模型

工具、环境

开发工具:PyCharm 2023.1.1 (Community Edition)
使用环境:Python 3.10.6
使用框架:tensorflow 2.12.0、tensorflow-datasets 4.9.2、tensorflow-recommenders 0.7.3、numpy 1.23.5、pandas 2.0.3、tensorboard 2.12.3

创建项目

使用PyCharm创建一个新项目:MovieRecommenders,方便后续在项目中实现推荐模型、排序模型相关的代码:
在这里插入图片描述
点击Create按钮,完成创建,新建项目截图如下:
在这里插入图片描述

项目配置

打开控制台,配置pip国内源,下包的速度会快一点,这里配置阿里源:

pip config set global.index-url https://mirrors.aliyun.com/pypi/simple
pip config set install.trusted-host mirrors.aliyun.com

配置截图如下:
在这里插入图片描述

安装相关python包

使用pip安装tensorflow、tensorflow-recommenders、tensorflow-datasets三个包,注意对应版本,tensorflow的依赖包很多,整个过程估计5~10分钟:

pip install tensorflow==2.12.0
pip install tensorflow-recommenders==0.7.3
pip install tensorflow-datasets==4.9.2

安装截图如下:
在这里插入图片描述

召回模型实现

新建movie_recommenders包,在该包下创建Retrieval.py文件,如下:
在这里插入图片描述
Retrieval.py主要为构建、训练、导出电影推荐召回模型,包含以下步骤(代码详见上面召回模型的文章):

  1. 导入相关模块
  2. 加载数据
  3. 数据预处理
  4. 生成词汇表
  5. 构建查询塔
  6. 构建候选条目塔
  7. 模型指标
  8. 损失函数
  9. 构建双塔召回模型
  10. 训练和评估
  11. 预测
  12. 导出和加载模型

这里我们改下保存模型的路径,把训练好的模型保存到项目路径下,为后续做推荐准备,其他代码不做变动:

# 保存模型和加载模型
# with tempfile.TemporaryDirectory() as tmp:
#   path = os.path.join(tmp, "model")
path = "C:\data\python\space\MovieRecommenders\models\\retrieval\\"
tf.saved_model.save(index, path)
loaded = tf.saved_model.load(path)
scores, titles = loaded(["42"])
print(f"Recommendations: {
     scores[0][:3]}")
print(f"Recommendations: {
     titles[0][:3]}")

点击运行,控制台训练、评估、推荐结果相关日志输出如下:

C:\data\python\space\MovieRecommenders\venv\Scripts\python.exe C:\data\python\space\MovieRecommenders\movie_recommenders\Retrieval.py 
Epoch 1/3
10/10 
更多推荐

#循循渐进学51单片机#变量进阶与点阵LED#not.6

1、掌握变量的作用域及存储类别。局部变量函数内部声明的变量,只在函数内部有效,在本函数以外是不能使用的,叫局部变量。全局变量在函数外部声明的变量就是全局变量,一个源程序可以包含一个或多个函数,全局变量的作用范围是从它开始声明的位置一直到程序结束。全局变量的副作用1)降低函数的独立性,对任何一个函数的修改都可能影响到其他

EMANE中olsrd的调试

1调试目的本着学习的态度,对emanetutorial中的示例程序进行重现,以加深对EMANE的理解和掌握。在示例程序0(见https://github.com/adjacentlink/emane-tutorial/wiki/Demonstration-0)中介绍了使用olsrlinkview.py脚本来通过可视化界

git命令的操作

git命令操作及命令大全1.创建一个新的本地仓库:2.添加文件到仓库:3.远程仓库操作:4.分支操作:5.git命令大全1.创建一个新的本地仓库:使用命令gitinit在本地目录中创建一个新的git仓库。2.添加文件到仓库:使用命令gitadd<文件名>将文件添加到暂存区。使用命令gitcommit-m"提交信息"将文

新款 锐科达 SV-2102VP SIP广播音频模块 RTP流音频广播

新款锐科达SV-2102VPSIP广播音频模块RTP流音频广播SV-2102VP和SV-2103VP网络音频模块是一款通用的独立SIP音频功能模块,可以轻松地嵌入到OEM产品中。该模块对来自网络的SIP协议及RTP音频流进行编解码。本系列模块可以应用于以下领域:•各种商业网络音频流应用•网络报警器,网络播放器•用于寻呼

计算机视觉与深度学习-图像分割-视觉识别任务03-实例分割-【北邮鲁鹏】

目录参考定义MarkR-CNN结构思路MaskR-CNN训练阶段使用的Mask样例MaskR-CNN实例分割结果MaskR-CNN检测姿态参考论文题目:MaskR-CNN论文链接:论文下载论文代码:Facebook代码链接;Tensorflow版本代码链接;KerasandTensorFlow版本代码链接;MxNet版

docker day01

docker:是一个容器管理工具。podman,pouch,lxc,rkt,...2013开源--->iT福音--->2015~coreOs--->Redhat--->IBM什么是容器:生活中装东西的,比如水杯,碗,水缸,鱼缸,...在计算机中,容器装的就是文件,只不过这些文件是一类程序,包括该程序依赖的库文件。LIN

基于未知环境碰撞冲突预测的群机器人多目标搜索研究

源自:指挥与控制学报作者:边晓荟周少武张红强吴亮红王汐王茂刘朝华陈磊“人工智能技术与咨询”发布摘要群机器人在未知动态环境下进行多目标搜索时,存在碰撞预测和搜索效率不高等问题。提出了一种碰撞几何锥和改进惯性权重的粒子群优化算法相结合的多目标搜索策略。首先,根据静、动态威胁物的不同分别引入碰撞锥(CC)和速度障碍法(VO)

MySQL 自动根据年份动态创建范围分区

前言要在MySQL中按年对日期进行分区,可以使用自动递增存储过程的方式实现动态分区,它并没有像Oracle里面的**INTERVAL(numtoyminterval(1,‘year’))**方法。创建动态分区1.创建一个包含所有分区的表,并使用InnoDB存储引擎。例如,创建一个名为mytable的表。CREATETA

51单片机 LCD1602

LCD1602.H#ifndef__LCD1602_H__#define__LCD1602_H__//用户调用函数:voidLCD_Init();voidLCD_ShowChar(unsignedcharLine,unsignedcharColumn,charChar);voidLCD_ShowString(unsig

Python常用做题笔记

1列表/队列/堆栈构建列表:[]声明列表比list()方法效率高声明队列和堆栈:法1:使用[]/list()方法模拟法2:使用collections.deque双端队列:模拟队列append\popleft模拟堆栈append\popcollections.deque():声明双端队列,初始化传入可迭代对象就行,例如列

AI-Toolbox

集合你需要的所有AI工具。(GatheralltheAItoolsyouneed.)1.AI绘画工具(AIdrawingtool)Midjourney:目前最强的AI绘画工具。StableDiffusion:最强开源AI绘画工具。Civital:AI艺术共享平台。HuggingFace:开源SD模型下载。VEGA:国内

热文推荐