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

使用TFRS获取推荐结果时返回张量而非实际值,求解决方法

解决TFRS推荐结果张量映射为实际值的问题

你当前得到的是候选item的ID张量,要获取有意义的实际推荐内容,核心是建立ID到真实内容的映射关系,再将张量转换为可读取的格式,以下是两种实用方法:

方法一:提前构建ID-内容映射字典

从movies数据集中提取item ID和对应的目标字段(比如标题),构建映射字典:

# 假设movies数据集包含movie_id和title字段
id_to_title = {}
for movie in movies.as_numpy_iterator():
    id_to_title[movie["movie_id"]] = movie["title"]

之后将预测得到的ID张量转为numpy数组,批量映射为实际内容:

_, candidate_ids = index({"user_id": tf.constant(["42"])})
# 扁平化张量并转为numpy数组
candidate_ids_np = candidate_ids.numpy().flatten()
# 映射为实际标题
recommended_titles = [id_to_title[mid] for mid in candidate_ids_np]
print(f"用户42的推荐内容:{recommended_titles}")

方法二:构建索引时直接存储内容(更便捷)

修改候选数据集的映射逻辑,让索引直接存储内容而非ID,后续预测可直接获取结果:

# 定义映射函数,返回候选嵌入向量和对应的标题
def map_candidate_with_title(movie):
    embedding = model.candidate_model(movie)
    return embedding, movie["title"]

# 用带标题的数据集构建索引
index.index_from_dataset(candidates=movies.batch(128).map(map_candidate_with_title))

# 直接获取推荐标题
_, recommended_titles = index({"user_id": tf.constant(["42"])})
# 转为numpy数组查看实际值
print(f"用户42的推荐内容:{recommended_titles.numpy().flatten()}")

注意事项

如果你的内容字段是字符串类型,转numpy后会得到字节串,需要解码为普通字符串:

recommended_titles = [title.decode('utf-8') for title in recommended_titles.numpy().flatten()]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 09:09:16