@tensorflow/tfjs-converter
Version:
Tensorflow model converter for javascript
106 lines (105 loc) • 3.77 kB
TypeScript
/// <amd-module name="@tensorflow/tfjs-converter/dist/operations/types" />
/**
* @license
* Copyright 2018 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 { Tensor } from '@tensorflow/tfjs-core';
import * as tfOps from '@tensorflow/tfjs-core/dist/ops/ops_for_converter';
import * as tensorflow from '../data/compiled_api';
import { NamedTensorsMap } from '../data/types';
import { ExecutionContext } from '../executor/execution_context';
import { ResourceManager } from '../executor/resource_manager';
export type ParamType = 'number' | 'string' | 'string[]' | 'number[]' | 'bool' | 'bool[]' | 'shape' | 'shape[]' | 'tensor' | 'tensors' | 'dtype' | 'dtype[]' | 'func';
export type Category = 'arithmetic' | 'basic_math' | 'control' | 'convolution' | 'creation' | 'custom' | 'dynamic' | 'evaluation' | 'graph' | 'hash_table' | 'image' | 'logical' | 'matrices' | 'normalization' | 'ragged' | 'reduction' | 'slice_join' | 'sparse' | 'spectral' | 'string' | 'transformation';
export declare interface ParamMapper {
name: string;
type: ParamType;
defaultValue?: ValueType;
notSupported?: boolean;
}
export declare interface InputParamMapper extends ParamMapper {
start: number;
end?: number;
}
export declare interface AttrParamMapper extends ParamMapper {
tfName?: string;
tfDeprecatedName?: string;
}
export interface InternalOpExecutor {
(node: Node, tensorMap: NamedTensorsMap, context: ExecutionContext, ops?: typeof tfOps): Tensor | Tensor[];
}
export interface InternalOpAsyncExecutor {
(node: Node, tensorMap: NamedTensorsMap, context: ExecutionContext, resourceManager?: ResourceManager, ops?: typeof tfOps): Promise<Tensor[]>;
}
export declare interface OpMapper {
tfOpName: string;
category?: Category;
inputs?: InputParamMapper[];
attrs?: AttrParamMapper[];
outputs?: string[];
customExecutor?: OpExecutor;
}
export declare interface Node {
signatureKey?: string;
name: string;
op: string;
category: Category;
inputNames: string[];
inputs: Node[];
inputParams: {
[key: string]: InputParamValue;
};
attrParams: {
[key: string]: ParamValue;
};
children: Node[];
rawAttrs?: {
[k: string]: tensorflow.IAttrValue;
};
defaultOutput?: number;
outputs?: string[];
}
export declare interface Graph {
nodes: {
[key: string]: Node;
};
placeholders: Node[];
inputs: Node[];
outputs: Node[];
weights: Node[];
signature?: tensorflow.ISignatureDef;
functions?: {
[key: string]: Graph;
};
initNodes?: Node[];
}
export type ValueType = string | string[] | number | number[] | number[][] | boolean | boolean[] | Tensor | Tensor[];
export declare interface ParamValue {
value?: ValueType;
type: ParamType;
}
export declare interface InputParamValue extends ParamValue {
inputIndexStart?: number;
inputIndexEnd?: number;
}
export interface OpExecutor {
(node: GraphNode): Tensor | Tensor[] | Promise<Tensor | Tensor[]>;
}
export interface GraphNode {
inputs: Tensor[];
attrs: {
[key: string]: ValueType;
};
}