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,您可以使用我们的 nightly 包

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 loss 并跟踪 nDCG 指标

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

配置您的后端

如果您已在环境中安装了 Keras 3(请参阅上面的安装说明),则可以使用 JAX、TensorFlow 和 PyTorch 来使用 Keras Recommenders。为此,请设置 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}},
}