# Hugging FaceでのKerasの活用

Kerasは、JAX、TensorFlow、PyTorchをサポートするオープンソースのマルチバックエンド深層学習フレームワークです。詳細は[keras.io](https://keras.io/)で確認できます。

## HubにおけるKerasの探索

[モデルページ](https://huggingface.co/models?library=keras&sort=downloads)でライブラリ名をフィルタリングすることで、Hub上の`keras`モデルをリスト表示できます。

Hub上のKerasモデルは、Kerasライブラリから直接アップロードすると、便利な機能が自動的に付与されます。
1. 説明、モデルのプロット、その他を含む生成されたモデルカード。
2. モデルの人気を監視するためのダウンロード数。
3. モデルをすぐに使い始めるためのコードスニペット。

## 既存のモデルを使用する

Keras は Hugging Face Hub と深く統合されています。これにより、ライブラリから直接 Hub 上のモデルを読み込み、保存できます。そのためには、Keras と `huggingface_hub` の最新バージョンをインストールする必要があります。`huggingface_hub` ライブラリは、Keras が Hub とやり取りするために使用する軽量な Python クライアントです。

```
pip install -U keras huggingface_hub
```

ライブラリをインストールした後、Hugging Face パスを引数として渡すだけで、通常の`keras.saving.load_model`メソッドを使用できます。HF パスとは、`hf://`で接頭辞が付けられた`repo_id`のことで、例えば`"hf://keras-io/weather-prediction"`です。`load_model`の詳細については、[Keras ドキュメント](https://keras.io/api/models/model_saving_apis/model_saving_and_loading/#load_model-function)を参照してください。

```py
import keras

model = keras.saving.load_model("hf://Wauplin/mnist_example")
```

特定のモデルの読み込み方法を確認したい場合は、モデルページで**Use this model**をクリックすると、動作するコードスニペットを取得できます！

## モデルの共有

`load_model`と同様に、HFパスを指定して`model.save()`を使用することで、`keras`モデルをHubに保存・共有できます。

```py
model = ...
model.save("hf://your-username/your-model-name")
```

リポジトリが Hub に存在しない場合、自動的に作成されます。アップロードされたモデルには、モデルカード、モデルのプロット、`metadata.json` と `config.json` ファイル、およびモデルの重みを含む `model.weights.h5` ファイルが含まれます。

デフォルトでは、リポジトリには最小限のモデルカードが含まれます。モデルカードの詳細や、その記入方法については、[モデルカードガイド](https://huggingface.co/docs/hub/model-cards)をご覧ください。また、`huggingface_hub.ModelCard` を使用してモデルカードをプログラムで更新することもできます（[ガイド](https://huggingface.co/docs/huggingface_hub/guides/model-cards)を参照）。

> [!TIP]
> `.keras` ファイルにすでにお familiar な方もいるかもしれません。実際、`.keras` ファイルとは、`.json` と `model.weights.h5` を含む zip ファイルにすぎません。Hub にプッシュすると、ファイルを閲覧できるようにするため、モデルは展開されたフォルダとして保存されます。なお、Hub のモデルリポジトリに `.keras` ファイルを手動でアップロードした場合、リポジトリは自動的に `keras` とタグ付けされますが、`keras.saving.load_model` を使用して読み込むことはできません。

## 追加のリソース

* Keras開発者[ガイド](https://keras.io/guides/)。
* Kerasの[サンプル](https://keras.io/examples/)。

