【Tensorflow 2.12 简单智能商城商品推荐系统搭建】

Tensorflow 2.12 简单智能商城商品推荐系统搭建

前言

基于 Tensorflow 2.12 搭建一个简单的智能商城商品推荐系统demo~
主要包含6个部分,首先是简单介绍系统架构,接着是训练数据收集、处理,然后是召回模型、排序模型的搭建以及训练、导出等,最后是部署模型提供REST API接口以及如何调用进行推荐。

Tensorflow是谷歌开源的机器学习框架,可以帮助我们轻松地构建和部署机器学习模型。这里记录学习使用Tensorflow来搭建一个简单的智能商城商品推荐系统。
相关版本:

  • python 3.1.0
  • pandas 2.0.3
  • tensorflow 2.12.0
  • tensorflow-recommenders 0.7.3

架构

通常一个商城系统主要包含前端、后台,前端包含网站、移动H5、APP、小程序、公众号等,后台主要包含相关的API服务以及存储层等。
首先运营通过后台来录入商品信息、进行上架,然后前端用户通过商城APP、小程序来浏览商品、搜索商品、进行下单购买、关注、收藏等。
一般系统中都会保留用户的这些操作数据,例如浏览数据、搜索数据、下单数据等,结合运营录入的商品数据,通过定时Job生成用户的特征数据、商品的特征数据,然后使用机器学习来找到用户喜欢的但又没有购买过的商品,进行简单的AI推荐。
这里简单的画了一个图:
在这里插入图片描述

数据

数据收集部分这里就不展开讲了,相信现在大部分电商系统都有保留用户的一些搜索数据、下单数据等,以及后台录入的商品数据,通过一个定时JOB,定时把数据查询出来导出为CSV文件即可,作为后续进行模型训练的数据集。
当然没有也没关系,可以写一个简单的Java方法、或者python方法随机生成数据,写到CSV文件中。
这里先从最简单的开始,只使用用户的下单数据以及商品数据来进行训练(主要特征为用户Id、商品Id)。
在这里插入图片描述

召回

主要是训练一个双塔召回模型,根据用户的历史下单数据以及商品数据,召回几百到数千条用户喜欢的商品(基于内容的推荐)。
召回模型搭建分为以下几部分:
1、数据处理
2、模型搭建
3、模型训练
4、模型评估
5、模型导出

import pprint
import pandas as pd

from typing import Dict, Text

import numpy as np
import tensorflow as tf
import tensorflow_recommenders as tfrs

# -*- coding:utf-8 -*-

# 使用pandas加载数据
order_df = pd.read_csv("C:\\data\\python\\data\\blog\\order.csv", encoding="gbk")
pprint.pprint(order_df.shape)
pprint.pprint(order_df.head(5))

# 处理数据类型(转为字符串)
order_df['user_id'] = order_df['user_id'].astype(str)
order_df['product_id'] = order_df['product_id'].astype(str)

# 将DataFrame(pandas)转换为Dataset(tensorflow)
order_df = tf.data.Dataset.from_tensor_slices(dict(order_df))
for x in order_df.take(1).as_numpy_iterator():
    pprint.pprint(x)

# 准备嵌入向量的词汇表(用户的)
user_ds = order_df.map(lambda x: {
   
    "user_id": x["user_id"],
    "product_id": x["product_id"]
})
# 准备嵌入向量的词汇表(商品的)
product_ds = order_df.map(lambda x: x["product_id"])

# 随机数种子
tf.random.set_seed(42)
# 打乱数据
shuffled = user_ds.shuffle(100_000, seed=42, reshuffle_each_iteration=False)
# 切分数据,分为训练数据以及验证数据
train = shuffled.take(80_000)
test = shuffled.skip(80_000).take(20_000)

# 数据分片
user_ids = user_ds.batch(1_000_000).map(lambda x: x["user_id"])
product_ids = product_ds.batch(1_000)
# 获取唯一的用户Id列表以及商品列表
unique_user_ids = np.unique(np.concatenate(list(user_ids)))
pprint.pprint(unique_user_ids[:5])
unique_product_ids = np.unique(np.concatenate(list(product_ids)))
pprint.pprint(unique_product_ids[:5])

# 将用户特征映射到用户embedding中,查询塔
user_model = tf.keras.Sequential([
    tf.keras.layers.StringLookup(vocabulary=unique_user_ids, mask_token=None),
    tf.keras.layers.Embedding(len(unique_user_ids) + 1, 32)
])
# 将商品特征映射到商品embedding中,候选条目塔
product_model = tf.keras.Sequential([
    tf.keras.layers.StringLookup(vocabulary=unique_product_ids, mask_token=None),
    tf.keras.layers.Embedding(len</
### 不同操作系统上安装 TensorFlow 2.12 的教程 #### Windows 系统上的安装方法 为了在 Windows 上成功安装 TensorFlow 2.12推荐使用 Anaconda 来管理环境和依赖包。通过创建一个新的 conda 虚拟环境来隔离项目所需的库文件和其他软件组件。 ```bash conda create --name tf_2_12 python=3.9 conda activate tf_2_12 pip install tensorflow==2.12.0 ``` 上述命令会建立名为 `tf_2_12` 的新环境并激活它,在此环境中安装 Python 版本为 3.9 和指定版本的 TensorFlow 库[^1]。 对于 GPU 支持的情况,则需额外安装 CUDA 工具包以及 cuDNN SDK,并确保它们与所选 TensorFlow 版本兼容。接着可以执行如下 pip 命令: ```bash pip install tensorflow-gpu==2.12.0 ``` 这一步骤同样适用于 Linux 平台下的 GPU 加速设置[^2]。 #### Linux 系统上的安装方式 针对 Ubuntu 或其他基于 Debian 发行版的操作系统而言,除了采用 Conda 方案外,还可以考虑直接借助官方提供的二进制分发包来进行全局范围内的安装操作。不过在此之前建议先更新系统的 apt-get 数据源列表以获取最新的软件资源信息。 ```bash sudo apt update && sudo apt upgrade -y ``` 之后可按照以下步骤继续完成 TensorFlow 的安装过程: ```bash python3 -m venv ~/tensorflow-venv source ~/tensorflow-venv/bin/activate pip install --upgrade pip pip install tensorflow==2.12.0 ``` 这里构建了一个虚拟环境用于容纳 TensorFlow 及其关联模块,从而避免可能存在的冲突问题;同时也保证了即使卸载该框架也不会影响到主机内核或其他应用程序的功能正常运作。 另外值得注意的是,在某些特殊场景下比如想要让 TensorFlow 利用 WSL (Windows Subsystem for Linux) 中集成的 NVIDIA 显卡性能时,则要遵循特定指南调整配置参数以便顺利启动训练任务[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值