Un gráfico que se puede invocar como una función única, con una firma de entrada y salida.
Una función también puede invocar una función tf.function definida en un SavedModelBundle
.
ConcreteFunction myFunction = savedModelBundle.function("myFunctionSignatureName");
Map<String, Tensor> outputTensorMap = myFunction.call(inputTensorMap);
Métodos públicos
Tensor | |
Mapa<Cadena, Tensor > | |
vacío | cerca () |
Función concreta estática | |
Función concreta estática | |
Función concreta estática | |
Gráfico | gráfico () Devuelve la gráfica de esta función. |
vacío | guardar (cadena exportDir) Exporte esta función como un modelo guardado. |
Sesión | |
Firma | firma () Devuelve la firma de esta función. |
Cadena | a cadena () |
Métodos heredados
Métodos públicos
llamada pública de tensor ( tensor tensor)
Invoca una función con una única entrada y salida.
La persona que llama es responsable de cerrar todos los tensores.
Parámetros
tensor | tensor de entrada |
---|
Devoluciones
- tensor de salida
Lanza
Excepción de argumento ilegal | si hay múltiples parámetros de entrada o salida definidos en la función |
---|
llamada pública Map<String, Tensor > (Map<String, Tensor > argumentos)
Invoca una función.
La persona que llama es responsable de cerrar todos los tensores.
Parámetros
argumentos | lista de tensores para pasar la entrada a la función, mapeados por su nombre de firma |
---|
Devoluciones
- tensores de salida resultantes de la ejecución de la función, mapeados por su nombre de firma
Lanza
Excepción de argumento ilegal |
---|
cierre público vacío ()
creación pública estática de ConcreteFunction (firma de firma , sesión de sesión )
Cree una función a partir de una firma y una sesión gráfica válida.
La función no será propietaria de la sesión ni de su gráfico, lo que significa que su vida útil puede extenderse más allá del alcance de la función. Por lo tanto, no es necesario cerrar la función después de su uso. Por ejemplo:
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
}
}
Parámetros
firma | firma de la función a crear |
---|---|
sesión | una sesión válida para un gráfico inicializado |
Devoluciones
- una nueva función
Creación de función concreta estática pública (Función <Ops, Firma > Generador de funciones)
Crea una función construyendo un nuevo gráfico.
El functionBuilder
debe inicializar el gráfico de funciones desde la instancia ERROR(/Ops)
proporcionada y devolver una firma válida que se utilizará para alimentar los tensores de entrada y recuperar los tensores de salida en la ejecución.
La función será la propietaria del nuevo gráfico y su sesión resultante. Por lo tanto, la función debe incluirse adecuadamente con un bloque try-with-resources para garantizar que todos los recursos nativos se liberen una vez que se descarte la función. Por ejemplo:
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());
}
}
}
}
Parámetros
constructor de funciones | constructor de funciones |
---|
Devoluciones
- la nueva función
creación pública estática de ConcreteFunction (firma de firma , gráfico gráfico )
Cree una función a partir de una firma y un gráfico existente.
La función mantendrá la propiedad de la sesión utilizada para ejecutar el gráfico, pero no del gráfico en sí, lo que significa que la vida útil de este último puede extenderse más allá del alcance de la función. Por ejemplo:
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
}
}
Parámetros
firma | firma de la función a crear |
---|---|
gráfico | un gráfico válido e inicializado |
Devoluciones
- una nueva función
guardar vacío público (cadena exportDir)
Exporte esta función como un modelo guardado.
Este método es un atajo conveniente equivalente a SavedModel.exporter(exportDir).withFunction(this).export()
Parámetros
exportDir | directorio donde exportar el modelo guardado |
---|
Lanza
IOExcepción | si el modelo guardado o el estado de la variable no se pueden escribir en el disco |
---|
sesión de sesión pública ()
Devuelve la sesión utilizada para ejecutar el gráfico al llamar a esta función
En general, un usuario no necesita manejar directamente la sesión de una función y confiar en call(Map)
para ejecutar el gráfico. Pero en algunos casos, puede ser necesario el acceso directo a la sesión, ya que permite más opciones de ejecución.
Devoluciones
- la sesión de función