You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Keras子类化API中独立运行并查看UserFeaturesModel输出

独立运行并检查TensorFlow Recommenders子模型输出

问题背景

已基于TensorFlow Recommenders和Keras子类化API实现推荐系统,其中UserFeaturesModel作为子模型负责生成用户特征嵌入,完整模型已编译训练并正常运行。需要单独运行该子模型,验证输出形状、拼接后的数据是否符合预期,以及明确其向下游子模型传递数据的方式,但因该模型仅做特征提取,无需损失函数,不清楚如何编译、运行并查看输出。

解决方案

核心思路

UserFeaturesModel本质是特征提取器,无需编译和训练即可完成前向传播生成输出。即使包含可训练层(如Embedding),也可直接前向运行查看输出;若需使用完整模型训练后的权重,只需复用对应层的参数即可。

步骤1:获取测试数据样本

从已处理的数据集中提取一批或单个样本,用于喂给子模型:

# 从缓存的训练数据中获取一个batch的样本
sample_batch = next(iter(cached_train))
# 或者提取单个样本
sample_single = next(iter(ratings.take(1)))

步骤2:直接运行模型生成输出

无需编译,直接调用模型实例并传入输入数据即可:

# 运行模型处理整个batch
batch_output = model(sample_batch)
# 运行模型处理单个样本
single_output = model(sample_single)

步骤3:检查输出结果

打印输出形状和部分数据,验证是否符合预期:

# 打印batch输出的形状
print("Batch输出形状:", batch_output.shape)
# 打印单个样本的输出
print("单个样本输出:", single_output.numpy())
# 打印前5个样本的前10维数据
print("前5个样本的前10维:\n", batch_output.numpy()[:5, :10])

根据模型定义,输出形状应为(batch_size, 32+32+1+1) = (batch_size, 66),符合拼接后的特征维度。

步骤4:复用完整模型训练后的权重

如果已训练好完整推荐模型,可将其中UserFeaturesModel的权重直接赋值给当前模型实例,确保使用训练后的参数:

# 假设完整模型中包含user_features子模型
# full_model = ... (你的完整推荐模型实例)
# 将完整模型的user_features层权重复制到当前模型
model.user_id_embeddings.set_weights(full_model.user_features.user_id_embeddings.get_weights())
model.timestamp_bucket_embeddings.set_weights(full_model.user_features.timestamp_bucket_embeddings.get_weights())

完整可运行代码片段

在原代码末尾添加以下内容即可运行:

# 获取测试样本
sample_batch = next(iter(cached_train))

# 直接运行模型
output = model(sample_batch)

# 查看输出结果
print("输出形状:", output.shape)
print("\n部分输出数据:\n", output.numpy()[:3])

内容的提问来源于stack exchange,提问作者AlexEast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 12:55:55