【Tensorflow 2.12 电影推荐系统之召回模型】

Tensorflow 2.12 电影推荐系统之召回模型

  • 学习笔记
    • 导入相关模块
    • 准备数据
      • 加载数据
      • 数据预处理
      • 生成词汇表
    • 构建模型
      • 嵌入维度
      • 查询塔
      • 候选条目塔
      • 模型指标
      • 损失函数
      • 定义双塔召回模型
    • 训练和评估
      • 创建模型实例
      • 缓存数据
      • 训练
      • 评估
    • 预测
    • 导出和加载模型
  • 结尾

学习笔记

Tensorflow 2.12 智能电影推荐系统搭建学习笔记~

Tensorflow是谷歌开源的机器学习框架,可以帮助我们轻松地构建和部署机器学习模型。这里记录学习使用tensorflow-recommenders来构建一个电影推荐召回模型。
版本:python3.1.0、tensorflow2.12.0~

导入相关模块

python"># 导入os模块,主要提供系统相关的函数,如文件操作等,这里主要用于保存模型
import os
# pretty print,适合打印复杂的数据结构对象
import pprint
# 用于创建临时文件和目录
import tempfile
# 字典以及文本处理模块
from typing import Dict, Text
# 一个用于进行科学计算的Python库,它提供了高性能的多维数组对象(ndarray)以及用于处理这些数组的各种函数和工具
import numpy as np
# 导入TensorFlow
import tensorflow as tf
import tensorflow_recommenders as tfrs
# TensorFlow示例数据加载模块
import tensorflow_datasets as tfds

准备数据

加载数据

Movielens数据集是明尼苏达大学的GroupLens研究小组的经典数据集。它包含了一组用户对电影的评分,是推荐系统研究的重要数据集。

python"># 加载用户-电影评分数据
ratings = tfds.load("movielens/100k-ratings", split="train")
# 加载电影特征数据
movies = tfds.load("movielens/100k-movies", split="train")
# 打印
for x in ratings.take(1).as_numpy_iterator():
  pprint.pprint(x)
# 数据:{'bucketized_user_age': 45.0,'movie_genres': array([7], dtype=int64),'movie_id': b'357','movie_title': b"One Flew Over the Cuckoo's Nest (1975)",'raw_user_age': 46.0,'timestamp': 879024327,'user_gender': True,'user_id': b'138','user_occupation_label': 4,'user_occupation_text': b'doctor','user_rating': 4.0,'user_zip_code': b'53211'}
for x in movies.take(1).as_numpy_iterator():
  pprint.pprint(x)
# 数据:{'movie_genres': array([4], dtype=int64),'movie_id': b'1681','movie_title': b'You So Crazy (1994)'}

数据预处理

先对数据进行处理,方便后续进行模型构建、训练、验证等。

python"># 数据处理,保留使用到特征,方便训练(这里保留用户Id以及用户观看过的电影标题)
ratings = ratings.map(lambda x: {
   
    "movie_title": x["movie_title"],
    "user_id": x["user_id"],
})
movies = movies.map(lambda x: x["movie_title"])
# 设置随机数
tf.random.set_seed(42)
# 对数据集中的样本进行随机排序,以打乱样本的顺序(通过对数据集进行洗牌,可以确保模型在训练过程中能够更好地学习样本之间的关联性,提高模型的泛化能力)
shuffled = ratings.shuffle(100_000, seed=42, reshuffle_each_iteration=False)
# 切分数据集,训练数据以及测试数据
train = shuffled.take(80_000)
tes

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

相关文章

41. Linux系统配置FTP服务器并在QT中使用QFtp实现文件上传

1. 说明 这篇博客主要记录一些在Linux系统中搭建FTP服务器时踩过的一些坑,以及在使用QFtp上传文件时需要注意的问题。 2. FTP环境搭建 在linux系统中,需要安装vsftpd,可以在终端中输入下面的命令进行安装: sudo apt-get install vsftpd使用上述命令安装后,系统中会有一…

c#遍历文件重命名

参考 https://blog.csdn.net/qq_42607586/article/details/131080456 https://www.techiedelight.com/zh/delete-file-in-csharp/ https://it.cha138.com/python/show-2350967.html https://www.zadmei.com/rhzczzmm.html using System; using System.Collections.Generic; us…

一、Stable Diffusion WebUI 安装

Mac 配置 类别配置机型Macbook pro m2核总数12 核中央处理器、38 核图形处理器和 16 核神经网络引擎内存64 G系统Sonoma 安装 Homebrew 打开终端执行(使用了国内镜像源安装) /bin/bash -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/r…

linux下解决tomcat错误问题

错误一: Linux下Tomcat启动报错:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined 原因:可能是Linux环境变了,需要在catalina.sh文件里指定JDK路径 解决方式: 在/bin/catalina.sh配置文件中加…

倒计时列表实现(小程序端Vue)

//rich-text主要用来将展示html格式的&#xff0c;可以直接使用这个标签 <view class"ptBox" v-for"(item,index) in orderList" :key"index"> <rich-text :nodes"item.limit_time|limitTimeFilter"></rich-text>…

免费开源 | 基于SSM的校园订餐系统

源码下载地址获取 关注并私信回复“订餐”&#xff0c;获取源码下载方式 一定要关注后发消息&#xff0c;否则系统限制无法回复消息 感谢开源&#xff01;侵删&#xff01; 一、功能实现 1. 前台模块 前台主要功能有&#xff1a;用户注册、用户登录、我的购物车、我的订单、…

大数据之Hive(三)

分区表 概念和常用操作 将一个大表的数据按照业务需要分散存储到多个目录&#xff0c;每个目录称为该表的一个分区。一般来说是按照日期来作为分区的标准。在查询时可以通过where子句来选择查询所需要的分区&#xff0c;这样查询效率会提高很多。 ①创建分区表 hive (defau…

爬虫入门基础-Selenium反爬

在网络时代&#xff0c;爬虫作为一种强大的数据采集工具&#xff0c;被广泛应用于各行各业。然而&#xff0c;许多网站为了防止被恶意爬取数据&#xff0c;采取了各种反爬虫机制。为了能够成功地绕过这些机制&#xff0c;Selenium成为了爬虫领域的一把利器。本文将为你介绍爬虫…