TF Hub 用の共通 SavedModel API

概要

TensorFlow Hub は、さまざまなタスクのモデルをホストします。同じタスク用のモデルには、共通の API を実装することをおすすめします。そうすることで、モデルを異なるパブリッシャーのものに変更する場合でも、それを使用するコードは変更せずに済むため、ユーザーは簡単にモデルを交換できます。

目標は、同じタスク用のモジュールの交換を、文字列値のハイパーパラメータの切り替えと同じくらい簡単にすることです。これにより、モデルのユーザーは問題に最も適したモデルを簡単に見つけられるようになります。

このディレクトリには、TF2 SavedModel 形式のモデルに実装する共通 API の仕様を集めています(これは、非推奨となった TF1 Hub 形式共通署名に代わるものです)。

再利用可能な SavedModel: 共通基盤

再利用可能な SavedModel API は、SavedModel を Python プログラムに読み込み、より大きな TensorFlow モデルの一部として再利用するための一般的な規則を定義しています。

基本的な使用法:

obj = hub.load("path/to/model")  # That's tf.saved_model.load() after download.
outputs = obj(inputs, training=False)  # Invokes the tf.function obj.__call__.

Keras ユーザーの場合、hub.KerasLayer クラスはこの API を使用して、再利用可能な SavedModel を Keras 層としてラップ(詳細から Keras ユーザーを遮蔽)し、以下に示すタスク固有の API に応じた入力と出力をとります。

タスク固有の API

以下に、特定の ML タスクやデータタイプ用の再利用可能な SavedModel API と規則を示します。