Keras Recommenders

Keras Recommenders

星标

Keras Recommenders 是一个基于 Keras 3 构建推荐系统的库。Keras Recommenders 原生支持 TensorFlow、JAX 或 PyTorch。它提供了一系列构建模块,有助于完成构建推荐系统的整个工作流程。由于它构建在 Keras 3 之上,模型可以在任何框架中训练和序列化,并在其他框架中重复使用,无需昂贵的迁移。

这个库是核心 Keras API 的扩展;所有高级模块都拥有与核心 Keras 相同的精良程度。如果你熟悉 Keras,恭喜你!你已经理解了 Keras Recommenders 的大部分内容。

安装

Keras Recommenders 在 PyPI 上以 keras-rs 的形式提供

pip install keras-rs

要尝试 Keras Recommenders 的最新版本,你可以使用我们的每夜构建包

pip install keras-rs-nightly

阅读 Keras 入门,了解更多关于安装 Keras 3 和与不同框架兼容性的信息。

快速入门

训练你自己的交叉网络

选择后端

import os
os.environ["KERAS_BACKEND"] = "jax"  # Or "tensorflow" or "torch"!

导入 KerasRS 和其他库

import keras
import keras_rs
import numpy as np

使用 FeatureCross 层定义一个简单模型

vocabulary_size = 32
embedding_dim = 6

inputs = keras.Input(shape=(), name='indices', dtype="int32")
x0 = keras.layers.Embedding(
    input_dim=vocabulary_size,
    output_dim=embedding_dim
)(inputs)
x1 = keras_rs.layers.FeatureCross()(x0, x0)
x2 = keras_rs.layers.FeatureCross()(x0, x1)
output = keras.layers.Dense(units=10)(x2)
model = keras.Model(inputs, output)

编译模型

model.compile(
    loss=keras.losses.MeanSquaredError(),
    optimizer=keras.optimizers.Adam(learning_rate=3e-4)
)

在虚拟数据上调用 model.fit()

batch_size = 2
x = np.random.randint(0, vocabulary_size, size=(batch_size,))
y = np.random.random(size=(batch_size,))
model.fit(x, y=y)

使用排序损失和指标

如果你的任务是为一个列表中的项目进行排序,你可以利用 KerasRS 提供的排序损失和指标。下面,我们使用 pairwise hinge 损失并跟踪 nDCG 指标

model.compile(
    loss=keras_rs.losses.PairwiseHingeLoss(),
    metrics=[keras_rs.metrics.NDCG()],
    optimizer=keras.optimizers.Adam(learning_rate=3e-4),
)

配置你的后端

如果你的环境中安装了 Keras 3(见上面的安装说明),你可以将 Keras Recommenders 与 JAX、TensorFlow 或 PyTorch 中的任何一个结合使用。为此,请设置 KERAS_BACKEND 环境变量。例如:

export KERAS_BACKEND=jax

或者在 Colab 中,使用:

import os
os.environ["KERAS_BACKEND"] = "jax"

import keras_rs

兼容性

我们遵循 语义版本控制,并计划为使用我们的组件构建的代码和保存的模型提供向后兼容性保证。在我们继续进行预发布 0.y.z 开发期间,我们随时可能破坏兼容性,API 不应被视为稳定。

引用 Keras Recommenders

如果 Keras Recommenders 对你的研究有帮助,我们感谢你的引用。BibTeX 条目如下:

@misc{kerasrecommenders2024,
  title={KerasRecommenders},
  author={Hertschuh, Fabien and Chollet, Fran\c{c}ois and Sharma, Abheesht and others},
  year={2024},
  howpublished={\url{https://github.com/keras-team/keras-rs}},
}