入力および出力のシグネチャを使用して、単一の関数として呼び出すことができるグラフ。
関数は、 SavedModelBundle
で定義されたtf.functionを呼び出すこともできます。
ConcreteFunction myFunction = savedModelBundle.function("myFunctionSignatureName");
Map<String, Tensor> outputTensorMap = myFunction.call(inputTensorMap);
パブリックメソッド
テンソル | |
Map<String, Tensor > | |
空所 | 近い() |
静的な具体関数 | |
静的な具体関数 | |
静的な具体関数 | |
グラフ | グラフ() この関数のグラフを返します |
空所 | 保存(文字列のエクスポートディレクトリ) この関数を保存されたモデルとしてエクスポートします。 |
セッション | |
サイン | サイン() この関数のシグネチャを返します |
弦 | toString () |
継承されたメソッド
パブリックメソッド
パブリックTensor呼び出し( Tensorテンソル)
単一の入力と出力を使用して関数を呼び出します。
呼び出し元はすべての Tensor を閉じる責任があります。
パラメータ
テンソル | 入力テンソル |
---|
返品
- 出力テンソル
投げる
IllegalArgumentException | 関数内に複数の入力パラメータまたは出力パラメータが定義されている場合 |
---|
public Map<String, Tensor > call (Map<String, Tensor > 引数)
関数を呼び出します。
呼び出し元はすべての Tensor を閉じる責任があります。
パラメータ
引数 | 関数への入力で渡すテンソルのリスト (シグネチャ名によってマップされる) |
---|
返品
- 関数の実行から得られる、シグネチャ名によってマッピングされた出力テンソル
投げる
IllegalArgumentException |
---|
public void close ()
public static ConcreteFunction create (署名署名、セッションセッション)
シグネチャと有効なグラフ セッションから関数を作成します。
関数はセッションもそのグラフも所有しません。つまり、それらの有効期間は関数の範囲を超えて延長される可能性があります。したがって、関数を使用後に閉じる必要はありません。例えば:
try (Graph g = new Graph()) {
Placeholder<TFloat32> input = tf.placeholder(TFloat32.class);
Add<TFloat32> output = tf.math.add(input, tf.constant(2.0f));
Signature signature = Signature.builder().input("x", input).output("y", output).build();
try (Session s = new Session(g)) {
// Auto-closing the function just as an example but this is not required since it has
// no effect
try (ConcreteFunction f = ConcreteFunction.create(signature, s);
TFloat32 t = TFloat32.scalarOf(2.0f)) {
assertEquals(4.0f, ((TFloat32)function.call(x)).getFloat());
// Session s is still valid at this point
}
// Graph g is still valid at this point
}
}
パラメータ
サイン | 作成する関数のシグネチャ |
---|---|
セッション | 初期化されたグラフへの有効なセッション |
返品
- 新しい機能
public static ConcreteFunction create (Function<Ops, Signature > functionBuilder)
新しいグラフを構築して関数を作成します。
functionBuilder
、提供されたERROR(/Ops)
インスタンスから関数グラフを初期化し、入力テンソルをフィードし、実行時に出力テンソルをフェッチするために使用される有効な署名を返す必要があります。
この関数は、新しいグラフとその結果のセッションの所有者になります。したがって、関数が破棄された後にすべてのネイティブ リソースが解放されることを保証するには、関数を try-with-resources ブロックで適切に囲む必要があります。例えば:
public class MyModel {
public static Signature addTwo(Ops tf) {
Placeholder<TFloat32> input = tf.placeholder(TFloat32.class);
Add<TFloat32> output = tf.math.add(input, tf.constant(2.0f));
return Signature.builder("addTwo").input("x", input).output("y", output).build();
public static void main(String args[]) {
try (ConcreteFunction function = ConcreteFunction.create(MyModel::addTwo);
TFloat32 x = TFloat32.scalarOf(2.0f)) {
assertEquals(4.0f, ((TFloat32)function.call(x)).getFloat());
}
}
}
}
パラメータ
関数ビルダー | 関数ビルダー |
---|
返品
- 新しい機能
public static ConcreteFunction create (署名署名、グラフグラフ)
シグネチャと既存のグラフから関数を作成します。
この関数は、グラフの実行に使用されるセッションの所有権を保持しますが、グラフ自体の所有権は保持しません。つまり、後者の存続期間は関数の範囲を超えて延長される可能性があります。例えば:
try (Graph g = new Graph()) {
Placeholder<TFloat32> input = tf.placeholder(TFloat32.class);
Add<TFloat32> output = tf.math.add(input, tf.constant(2.0f));
Signature signature = Signature.builder().input("x", input).output("y", output).build();
try (ConcreteFunction f = ConcreteFunction.create(signature, g);
TFloat32 x = TFloat32.scalarOf(2.0f)) {
assertEquals(4.0f, ((TFloat32)function.call(x)).getFloat());
// Graph g is still valid at this point
}
}
パラメータ
サイン | 作成する関数のシグネチャ |
---|---|
グラフ | 有効で初期化されたグラフ |
返品
- 新しい機能
public void save (String exportDir)
この関数を保存されたモデルとしてエクスポートします。
このメソッドはSavedModel.exporter(exportDir).withFunction(this).export()
と同等の便利なショートカットです。
パラメータ
エクスポートディレクトリ | 保存されたモデルをエクスポートするディレクトリ |
---|
投げる
IO例外 | 保存されたモデルまたは変数の状態をディスクに書き込めない場合 |
---|
公開セッションセッション()
この関数を呼び出すときにグラフの実行に使用されるセッションを返します。
一般に、ユーザーは関数のセッションを直接処理する必要はなく、代わりにcall(Map)
に依存してグラフを実行します。ただし、場合によっては、より多くの実行オプションが可能になるため、セッションへの直接アクセスが必要になることがあります。
返品
- 関数セッション