/** * @license * Copyright 2019 Google Inc. All Rights Reserved. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ============================================================================= */ import { InferenceModel, MetaGraph, ModelPredictConfig, ModelTensorInfo, NamedTensorMap, Tensor } from '@tensorflow/tfjs'; import { NodeJSKernelBackend } from './nodejs_kernel_backend'; /** * Get a key in an object by its value. This is used to get protobuf enum value * from index. * * @param object * @param value */ export declare function getEnumKeyFromValue(object: any, value: number): string; /** * Read SavedModel proto message from path. * * @param path Path to SavedModel folder. */ export declare function readSavedModelProto(path: string): Promise; /** * Inspect the MetaGraphs of the SavedModel from the provided path. This * function will return an array of `MetaGraphInfo` objects. * * @param path Path to SavedModel folder. */ /** * @doc {heading: 'Models', subheading: 'SavedModel', namespace: 'node'} */ export declare function getMetaGraphsFromSavedModel(path: string): Promise; /** * Get input and output node names from SavedModel metagraphs info. The * input.output node names will be used when executing a SavedModel signature. * * @param savedModelInfo The MetaGraphInfo array loaded through * getMetaGraphsFromSavedModel(). * @param tags The tags of the MetaGraph to get input/output node names from. * @param signature The signature to get input/output node names from. */ export declare function getInputAndOutputNodeNameFromMetaGraphInfo(savedModelInfo: MetaGraph[], tags: string[], signature: string): { [key: string]: string; }[]; /** * A `tf.TFSavedModel` is a signature loaded from a SavedModel * metagraph, and allows inference execution. */ /** * @doc {heading: 'Models', subheading: 'SavedModel', namespace: 'node'} */ export declare class TFSavedModel implements InferenceModel { private sessionId; private jsid; private inputNodeNames; private outputNodeNames; private backend; private disposed; constructor(sessionId: number, jsid: number, inputNodeNames: { [key: string]: string; }, outputNodeNames: { [key: string]: string; }, backend: NodeJSKernelBackend); /** * Return the array of input tensor info. */ /** @doc {heading: 'Models', subheading: 'SavedModel'} */ readonly inputs: ModelTensorInfo[]; /** * Return the array of output tensor info. */ /** @doc {heading: 'Models', subheading: 'SavedModel'} */ readonly outputs: ModelTensorInfo[]; /** * Delete the SavedModel from nodeBackend and delete corresponding session in * the C++ backend if the session is only used by this TFSavedModel. */ /** @doc {heading: 'Models', subheading: 'SavedModel'} */ dispose(): void; /** * Execute the inference for the input tensors. * * @param input The input tensors, when there is single input for the model, * inputs param should be a Tensor. For models with multiple inputs, inputs * params should be in either Tensor[] if the input order is fixed, or * otherwise NamedTensorMap format. The keys in the NamedTensorMap are the * name of input tensors in SavedModel signatureDef. It can be found through * `tf.node.getMetaGraphsFromSavedModel()`. * * For batch inference execution, the tensors for each input need to be * concatenated together. For example with mobilenet, the required input shape * is [1, 244, 244, 3], which represents the [batch, height, width, channel]. * If we are provide a batched data of 100 images, the input tensor should be * in the shape of [100, 244, 244, 3]. * * @param config Prediction configuration for specifying the batch size. * * @returns Inference result tensors. The output would be single Tensor if * model has single output node, otherwise Tensor[] or NamedTensorMap[] will * be returned for model with multiple outputs. */ /** @doc {heading: 'Models', subheading: 'SavedModel'} */ predict(inputs: Tensor | Tensor[] | NamedTensorMap, config?: ModelPredictConfig): Tensor | Tensor[] | NamedTensorMap; /** * Execute the inference for the input tensors and return activation * values for specified output node names without batching. * * @param input The input tensors, when there is single input for the model, * inputs param should be a Tensor. For models with multiple inputs, inputs * params should be in either Tensor[] if the input order is fixed, or * otherwise NamedTensorMap format. * * @param outputs string|string[]. List of output node names to retrieve * activation from. * * @returns Activation values for the output nodes result tensors. The return * type matches specified parameter outputs type. The output would be single * Tensor if single output is specified, otherwise Tensor[] for multiple * outputs. */ /** @doc {heading: 'Models', subheading: 'SavedModel'} */ execute(inputs: Tensor | Tensor[] | NamedTensorMap, outputs: string | string[]): Tensor | Tensor[]; } /** * Load a TensorFlow SavedModel from disk. TensorFlow SavedModel is different * from TensorFlow.js model format. A SavedModel is a directory containing * serialized signatures and the states needed to run them. The directory has a * saved_model.pb (or saved_model.pbtxt) file storing the actual TensorFlow * program, or model, and a set of named signatures, each identifying a * function. The directory also has a variables directory contains a standard * training checkpoint. The directory may also has a assets directory contains * files used by the TensorFlow graph, for example text files used to initialize * vocabulary tables. These are supported datatypes: float32, int32, complex64, * string.For more information, see this guide: * https://www.tensorflow.org/guide/saved_model. * * @param path The path to the SavedModel. * @param tags The tags of the MetaGraph to load. The available tags of a * SavedModel can be retrieved through tf.node.getMetaGraphsFromSavedModel() * API. Defaults to ['serve']. * @param signature The name of the SignatureDef to load. The available * SignatureDefs of a SavedModel can be retrieved through * tf.node.getMetaGraphsFromSavedModel() API. Defaults to 'serving_default'. */ /** @doc {heading: 'Models', subheading: 'SavedModel', namespace: 'node'} */ export declare function loadSavedModel(path: string, tags?: string[], signature?: string): Promise; export declare function getNumOfSavedModels(): number;