💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在优快云上与你们相遇~💖

本博客的精华专栏:
【自动化测试】 【测试经验】 【人工智能】 【Python】

TensorFlow 深度学习 | 使用函数式 API 实现 Wide & Deep 模型
在深度学习应用中,Wide & Deep 模型 是一种非常经典的结构,它结合了 线性模型的记忆能力(Wide) 和 深度神经网络的泛化能力(Deep),在推荐系统和分类任务中被广泛应用。
本文将带你一步步使用 TensorFlow 函数式 API 来实现一个 Wide & Deep 模型,并进行示例训练。
🚀 一、Wide & Deep 模型简介
Wide & Deep 模型最早由 Google 提出,主要用于推荐系统任务,目标是 同时记忆历史特征组合(memorization)和学习潜在特征交互(generalization)。
-
Wide 部分
- 本质是一个广义线性模型(Generalized Linear Model, GLM),擅长记忆已有的特征组合。
- 比如:用户曾经买过某类商品,那么下次推荐时可以直接利用该组合特征。
-
Deep 部分
- 使用深度神经网络(DNN)进行特征嵌入和非线性组合,具备泛化能力。
- 比如:即使用户没买过某类商品,模型也能通过相似特征推测出潜在兴趣。
最终输出层会将 Wide 输出和 Deep 输出拼接,并接入一个分类器(如 sigmoid 或 softmax)完成预测。
🏗️ 二、数据准备与预处理
在本示例中,我们使用 TensorFlow 自带的 Adult Census Income 数据集,它用于预测一个人年收入是否超过 50K 美元,包含数值型和类别型特征,非常适合 Wide & Deep 演示。
import tensorflow as tf
import tensorflow_datasets as tfds
# 加载 Adult 数据集
train_data, test_data = tfds.load(
'adult',
split=['train', 'test'],
as_supervised=True
)
# 数据格式:(features, label)
for features, label in train_data.take(1):
print(features, label)
由于数据集中存在类别特征,我们需要使用 TensorFlow 的特征预处理层(如 CategoryEncoding、Normalization) 来对其进行编码。
🛠️ 三、使用函数式 API 构建 Wide & Deep 模型
TensorFlow 的函数式 API(Functional API)比 Sequential 更灵活,非常适合构建多输入、多输出或共享层的复杂模型。
1. 定义输入层
from tensorflow.keras import layers
# 数值型输入
age = layers.Input(shape=(1,

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



