/** * @license * Copyright 2022 Google LLC. 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 { GraphModel } from '@tensorflow/tfjs-converter'; import { InferenceModel, io, ModelPredictConfig, NamedTensorMap, Tensor } from '@tensorflow/tfjs-core'; import { TFDFLoadHandler, TFDFLoadHandlerSync } from './types/tfdf_io'; /** * To load a `tfdf.TFDFModel`, use the `loadTFDFModel` function below. * * Sample usage: * * ```js * // Load the test TFDF model. * const tfdfModel = await tfdf.loadTFDFModel( * 'https://storage.googleapis.com/tfjs-testing/adult_gbt_no_regex/model.json'); * const inputs = { * 'age': tf.tensor1d([39, 40, 40, 35], 'int32'), * 'workclass': tf.tensor1d( * ['State-gov', 'Private', 'Private', 'Federal-gov'], 'string'), * 'fnlwgt': tf.tensor1d([77516, 121772, 193524, 76845], 'int32'), * 'education': * tf.tensor1d(['Bachelors', 'Assoc-voc', 'Doctorate', '9th'], 'string'), * 'education_num': tf.tensor1d([13, 11, 16, 5], 'int32'), * 'marital_status': tf.tensor1d( * [ * 'Never-married', 'Married-civ-spouse', 'Married-civ-spouse', * 'Married-civ-spouse' * ], * 'string'), * 'occupation': tf.tensor1d( * ['Adm-clerical', 'Craft-repair', 'Prof-specialty', 'Farming-fishing'], * 'string'), * 'relationship': tf.tensor1d( * ['Not-in-family', 'Husband', 'Husband', 'Husband'], 'string'), * 'race': tf.tensor1d( * ['White', 'Asian-Pac-Islander', 'White', 'Black'], 'string'), * 'sex': tf.tensor1d(['Male', 'Male', 'Male', 'Male'], 'string'), * 'capital_gain': tf.tensor1d([2174, 0, 0, 0], 'int32'), * 'capital_loss': tf.tensor1d([0, 0, 0, 0], 'int32'), * 'hours_per_week': tf.tensor1d([40, 40, 60, 40], 'int32'), * 'native_country': tf.tensor1d( * ['United-States', '', 'United-States', 'United-States'], 'string') * }; * const densePredictions = await tfdfModel.executeAsync(inputs); * console.log(densePredictions); * ``` */ export declare class TFDFModel implements InferenceModel { private readonly graphModel; private readonly assets; constructor(graphModel: GraphModel | GraphModel, assets: string | Blob); get inputs(): import("@tensorflow/tfjs-converter/dist/data/types").TensorInfo[]; get outputs(): import("@tensorflow/tfjs-converter/dist/data/types").TensorInfo[]; /** * Execute the inference for the input tensors. * * @param inputs 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 config Prediction configuration for specifying the batch size. * Currently this field is not used, and batch inference is not supported. * * @returns Inference result tensors. The output would be single Tensor if * model has single output node, otherwise NamedTensorMap will be returned * for model with multiple outputs. Tensor[] is not used. */ 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 inputs 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. */ execute(inputs: Tensor | Tensor[] | NamedTensorMap, outputs: string | string[]): Tensor | Tensor[]; /** * Executes inference for the model for given input tensors in async * fashion, use this method when your model contains control flow ops. * @param inputs tensor, tensor array or tensor map of the inputs for the * model, keyed by the input node names. * @param outputs output node name from the TensorFlow model, if no outputs * are specified, the default outputs of the model would be used. You can * inspect intermediate nodes of the model by adding them to the outputs * array. * * @returns A Promise of single tensor if provided with a single output or * no outputs are provided and there is only one default output, otherwise * return a tensor map. */ executeAsync(inputs: Tensor | Tensor[] | NamedTensorMap, outputs?: string | string[]): Promise; dispose(): void; } /** * Load a TFDF graph model given a URL to the model definition. * * Example of loading an example model from a URL and making a prediction with * an input map: * * ```js * // Load the test TFDF model. * const tfdfModel = await tfdf.loadTFDFModel( * 'https://storage.googleapis.com/tfjs-testing/adult_gbt_no_regex/model.json'); * ``` * @param modelUrl The url or an `TFDFLoadHandler` that loads the model and * model assets. * @param options Options for the HTTP request, which allows to send credentials * and custom headers. */ export declare function loadTFDFModel(modelUrl: string | TFDFLoadHandler, options?: io.LoadOptions, tfio?: typeof io): Promise; /** * Load a TFDF graph model given a synchronous IO handler with a 'load' method. * * @param modelSource The `TFDFLoadHandlerSync` that loads the model. */ export declare function loadTFDFModelSync(modelSource: TFDFLoadHandlerSync): TFDFModel;