Wykres, który można wywołać jako pojedynczą funkcję, z sygnaturą wejściową i wyjściową.
Funkcja może również wywołać funkcję tf zdefiniowaną w SavedModelBundle
.
ConcreteFunction myFunction = savedModelBundle.function("myFunctionSignatureName");
Map<String, Tensor> outputTensorMap = myFunction.call(inputTensorMap);
Metody publiczne
Napinacz | |
Mapa<String, Tensor > | |
próżnia | zamknąć () |
statyczna funkcja ConcreteFunction | |
statyczna funkcja ConcreteFunction | |
statyczna funkcja ConcreteFunction | |
Wykres | wykres () Zwraca wykres tej funkcji |
próżnia | zapisz (String eksportDir) Eksportuj tę funkcję jako zapisany model. |
Sesja | |
Podpis | podpis () Zwraca sygnaturę tej funkcji |
Smyczkowy | doString () |
Metody dziedziczone
Metody publiczne
publiczne wywołanie Tensora ( Tensor Tensora)
Wywołuje funkcję z pojedynczym wejściem i wyjściem.
Osoba wywołująca jest odpowiedzialna za zamknięcie wszystkich tensorów.
Parametry
napinacz | tensor wejściowy |
---|
Powroty
- tensor wyjściowy
Rzuca
Wyjątek IllegalArgument | jeśli w funkcji zdefiniowanych jest wiele parametrów wejściowych lub wyjściowych |
---|
public Map<String, Tensor > wywołanie (Map<String, Tensor > argumenty)
Wywołuje funkcję.
Osoba wywołująca jest odpowiedzialna za zamknięcie wszystkich tensorów.
Parametry
argumenty | lista tensorów do przekazania danych wejściowych do funkcji, odwzorowana według ich nazwy podpisu |
---|
Powroty
- tensory wyjściowe wynikające z wykonania funkcji, odwzorowane według ich nazwy sygnatury
Rzuca
Wyjątek IllegalArgument |
---|
publiczna pustka zamknij ()
public static ConcreteFunction create ( podpis podpisu , sesja sesji )
Utwórz funkcję na podstawie podpisu i prawidłowej sesji wykresu.
Funkcja nie będzie właścicielem sesji ani jej wykresu, co oznacza, że ich czas życia może wykraczać poza zakres funkcji. Dlatego funkcja nie musi być zamykana po jej użyciu. Na przykład:
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
}
}
Parametry
podpis | podpis funkcji do utworzenia |
---|---|
sesja | prawidłową sesję do zainicjowanego wykresu |
Powroty
- nową funkcję
public static ConcreteFunction create (Function<Ops, Signature >functionBuilder)
Tworzy funkcję, budując nowy wykres.
functionBuilder
musi zainicjować wykres funkcji z podanej instancji ERROR(/Ops)
i zwrócić poprawną sygnaturę, która będzie używana do zasilania tensorów wejściowych i pobierania tensorów wyjściowych podczas wykonywania.
Funkcja będzie właścicielem nowego wykresu i sesji wynikowej. Dlatego funkcja musi być odpowiednio ujęta w blok try-with-resources, aby zagwarantować, że po odrzuceniu funkcji zostaną zwolnione wszystkie zasoby natywne. Na przykład:
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());
}
}
}
}
Parametry
Konstruktor funkcji | konstruktor funkcji |
---|
Powroty
- nową funkcję
public static ConcreteFunction create (podpis podpisu , wykres wykresu )
Utwórz funkcję na podstawie podpisu i istniejącego wykresu.
Funkcja zachowa własność sesji użytej do uruchomienia wykresu, ale nie samego wykresu, co oznacza, że jego żywotność może wykraczać poza zakres funkcji. Na przykład:
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
}
}
Parametry
podpis | podpis funkcji do utworzenia |
---|---|
wykres | prawidłowy i zainicjowany wykres |
Powroty
- nową funkcję
publiczny zapis pustej wartości (String eksportDir)
Eksportuj tę funkcję jako zapisany model.
Ta metoda jest wygodnym skrótem odpowiadającym SavedModel.exporter(exportDir).withFunction(this).export()
Parametry
eksportDir | katalog, do którego ma zostać wyeksportowany zapisany model |
---|
Rzuca
Wyjątek IO | jeśli zapisany model lub stan zmiennej nie mogą zostać zapisane na dysku |
---|
sesja publiczna sesja ()
Zwraca sesję używaną do wykonania wykresu podczas wywoływania tej funkcji
Ogólnie rzecz biorąc, użytkownik nie musi bezpośrednio obsługiwać sesji funkcji i zamiast tego polegać na call(Map)
aby wykonać wykres. Jednak w niektórych przypadkach może być konieczny bezpośredni dostęp do sesji, ponieważ zapewnia ona więcej opcji działania.
Powroty
- sesję funkcyjną