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

Tensorflow 2.12 电影推荐项目搭建

  • 学习笔记
    • 工具、环境
    • 创建项目
    • 项目配置
    • 安装相关python
    • 召回模型实现
    • 排序模型实现
    • 实现电影推荐
      • 导入模块
      • 设置要推荐的用户
      • 召回推荐
      • 排序推荐
      • 推荐结果
  • 结尾

学习笔记

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国内源,下包的速度会快一点,这里配置阿里源:

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

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

python_25">安装相关python

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

python">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. 导出和加载模型

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

python"># 保存模型和加载模型
# 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]}")

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

python">C:\data\python\space\MovieRecommenders\venv\Scripts\python.exe C:\data\python\space\MovieRecommenders\movie_recommenders\Retrieval.py 
Epoch 1/3
10/10 

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

相关文章

服务器迁移:无缝过渡指南

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

Java手写约瑟夫问题算法和约瑟夫问题算法应用拓展案例

Java手写约瑟夫问题算法和约瑟夫问题算法应用拓展案例 1. 算法思维导图 #mermaid-svg-B3wDCGM5buVlBiX8 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-B3wDCGM5buVlBiX8 .error-icon{fill:#552222;}#mermaid-svg-…

React中的Hooks--useReducer()

首先,useReducer是React提供的一个钩子函数,用于管理组件内部的状态。它可以接收一个reducer函数和初始状态,并返回一个包含状态和更新状态的函数的数组。 与之相反,Redux是一个独立的状态管理库,它可以在整个应用程序…

vue2——电商项目 黑马

创建项目 初始化 router app.vue vant 组件库 Viewport 布局 vw适配 路由配置 底部导航组件 二级路由配置 登录页面 新建默认样式 main.js 引入commonless 登录静态页面—头部组件NavBar 导入navbar 引用 axios封装 图形验证码 获取 get 渲染 api接口模块 toast轻提示 使用 …

python与mongodb交互-->pymongo

from pymongo import MongoClient# 创建数据库连接对象 clientMongoClient(ip,27017)# 选择一个数据库 dbclient[admin]db.authenticate(python,python)# 选择一个集合 colclient[pydata][test]col.insert({"class":"python"})col.find() for data in col.…

浅谈redis分布式锁

浅谈redis分布式锁 分布式锁介绍 分布式锁,顾名思义,分布式系统中的锁,当多个进程不在同一个系统中时,用分布式锁控制各个进程对共享资源的访问,通过互斥来保持一致性。 使用场景:电商中某商品的秒杀活动…

【深入理解ES6】函数

箭头函数 这是 ES6 中引入的一个有趣的新特性。箭头函数,顾名思义就是一种使用箭头(>)定义的新语法,与传统函数的差别如下: 没有this、super、arguments和new.target绑定,他们由外围最近一层非箭头函数…

MATLAB算法实战应用案例精讲-【自动驾驶】栅格地图(附python、MATLAB和C++代码实现)

目录 前言 几个高频面试题目 点云地图和栅格地图的优劣对比 点云地图 栅格地图