График, который можно вызвать как одну функцию с входной и выходной сигнатурой.
Функция также может вызывать функцию tf.function, определенную в SavedModelBundle
.
ConcreteFunction myFunction = savedModelBundle.function("myFunctionSignatureName");
Map<String, Tensor> outputTensorMap = myFunction.call(inputTensorMap);
Публичные методы
Тензор | |
Карта<Строка, Тензор > | |
пустота | закрывать () |
статическая конкретная функция | |
статическая конкретная функция | |
статическая конкретная функция | |
График | график () Возвращает график этой функции |
пустота | сохранить (StringexportDir) Экспортируйте эту функцию как сохраненную модель. |
Сессия | |
Подпись | подпись () Возвращает подпись этой функции |
Нить | toString () |
Унаследованные методы
Публичные методы
публичный вызов Tensor ( тензор тензора)
Вызывает функцию с одним входом и выходом.
Вызывающая сторона отвечает за закрытие всех тензоров.
Параметры
тензор | входной тензор |
---|
Возврат
- выходной тензор
Броски
IllegalArgumentException | если в функции определено несколько входных или выходных параметров |
---|
общедоступный вызов Map<String, Tensor > (аргументы Map<String, Tensor >)
Вызывает функцию.
Вызывающая сторона отвечает за закрытие всех тензоров.
Параметры
аргументы | список тензоров для передачи в функцию, сопоставленный с их сигнатурным именем |
---|
Возврат
- выходные тензоры, возникающие в результате выполнения функции, сопоставленные с их сигнатурным именем
Броски
IllegalArgumentException |
---|
public void закрыть ()
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());
}
}
}
}
Параметры
functionBuilder | конструктор функций |
---|
Возврат
- новая функция
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
}
}
Параметры
подпись | подпись функции для создания |
---|---|
график | действительный и инициализированный граф |
Возврат
- новая функция
общедоступное недействительное сохранение (String ExportDir)
Экспортируйте эту функцию как сохраненную модель.
Этот метод представляет собой удобный ярлык, эквивалентный SavedModel.exporter(exportDir).withFunction(this).export()
Параметры
каталог экспорта | каталог, куда экспортировать сохраненную модель |
---|
Броски
Исключение IO | если сохраненное состояние модели или переменной не может быть записано на диск |
---|
сеанс публичной сессии ()
Возвращает сеанс, используемый для выполнения графика при вызове этой функции.
В общем, пользователю не нужно напрямую обрабатывать сеанс функции и вместо этого полагаться на call(Map)
для выполнения графа. Но в некоторых случаях может потребоваться прямой доступ к сеансу, поскольку он предоставляет больше возможностей запуска.
Возврат
- сеанс функции