import { RandNormalDataTypes } from './ops/rand'; import { DataType, DataTypeMap, Rank, ShapeMap, TypedArray } from './types'; export interface TensorData { dataId?: DataId; values?: TypedArray; } export declare class TensorBuffer { shape: ShapeMap[R]; dtype: DataType; values: TypedArray; size: number; private strides; constructor(shape: ShapeMap[R], dtype: DataType, values: TypedArray); set(value: number, ...locs: number[]): void; get(...locs: number[]): number; locToIndex(locs: number[]): number; indexToLoc(index: number): number[]; readonly rank: number; toTensor(): Tensor; } export declare type DataId = object; export declare class Tensor { private static nextId; readonly id: number; dataId: DataId; readonly shape: ShapeMap[R]; readonly size: number; readonly dtype: DataType; readonly rankType: R; readonly strides: number[]; protected constructor(shape: ShapeMap[R], dtype: DataType, values?: TypedArray, dataId?: DataId); static ones(shape: ShapeMap[R], dtype?: DataType): Tensor; static zeros(shape: ShapeMap[R], dtype?: DataType): Tensor; static onesLike(x: T): T; static zerosLike(x: T): T; static like(x: T): T; static make, D extends DataType = 'float32', R extends Rank = Rank>(shape: ShapeMap[R], data: TensorData, dtype?: D): T; static fromPixels(pixels: ImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement, numChannels?: number): Tensor3D; static rand(shape: ShapeMap[R], randFunction: () => number, dtype?: DataType): Tensor; static randNormal(shape: ShapeMap[R], mean?: number, stdDev?: number, dtype?: keyof RandNormalDataTypes, seed?: number): Tensor; static randTruncatedNormal(shape: ShapeMap[R], mean?: number, stdDev?: number, dtype?: keyof RandNormalDataTypes, seed?: number): Tensor; static randUniform(shape: ShapeMap[R], a: number, b: number, dtype?: DataType): Tensor; flatten(): Tensor1D; asScalar(): Scalar; as1D(): Tensor1D; as2D(rows: number, columns: number): Tensor2D; as3D(rows: number, columns: number, depth: number): Tensor3D; as4D(rows: number, columns: number, depth: number, depth2: number): Tensor4D; asType(this: T, dtype: DataType): T; readonly rank: number; get(...locs: number[]): number; val(...locs: number[]): Promise; locToIndex(locs: number[]): number; indexToLoc(index: number): number[]; getValues(): TypedArray; getValuesAsync(): Promise; buffer(): TensorBuffer; data(): Promise; dataSync(): TypedArray; dispose(): void; private isDisposed; protected throwIfDisposed(): void; toFloat(this: T): T; toInt(): this; toBool(): this; print(verbose?: boolean): void; reshape(newShape: ShapeMap[R2]): Tensor; reshapeAs(x: T): T; expandDims(axis?: number): Tensor; squeeze(axis?: number[]): T; clone(this: T): T; toString(): string; tile(this: T, reps: number[]): T; gather(this: T, indices: Tensor1D, axis?: number): T; matMul(b: Tensor2D, transposeA?: boolean, transposeB?: boolean): Tensor2D; norm(ord?: number | 'euclidean' | 'fro', axis?: number | number[], keepDims?: boolean): Tensor; slice>(this: T, begin: ShapeMap[R], size: ShapeMap[R]): T; reverse(this: T, axis?: number | number[]): T; concat(this: T, x: T, axis?: number): T; stack(x: Tensor, axis?: number): Tensor; pad(this: T, paddings: Array<[number, number]>, constantValue?: number): T; batchNormalization(mean: Tensor | Tensor1D, variance: Tensor | Tensor1D, varianceEpsilon?: number, scale?: Tensor | Tensor1D, offset?: Tensor | Tensor1D): Tensor; logSumExp(axis?: number | number[], keepDims?: boolean): T; sum(axis?: number | number[], keepDims?: boolean): T; mean(axis?: number | number[], keepDims?: boolean): T; min(axis?: number | number[], keepDims?: boolean): T; max(axis?: number | number[], keepDims?: boolean): T; argMin(axis?: number): T; argMax(axis?: number): T; add(x: Tensor): T; addStrict(this: T, x: T): T; sub(x: Tensor): T; subStrict(this: T, x: T): T; pow(this: T, exp: Tensor): T; powStrict(exp: Tensor): Tensor; mul(x: Tensor): T; mulStrict(this: T, x: T): T; div(x: Tensor): T; divStrict(this: T, x: T): T; minimum(x: Tensor): T; minimumStrict(this: T, x: T): T; maximum(x: Tensor): T; maximumStrict(this: T, x: T): T; transpose(this: T, perm?: number[]): T; notEqual(x: Tensor): T; notEqualStrict(this: T, x: T): T; less(x: Tensor): T; lessStrict(this: T, x: T): T; equal(x: Tensor): T; equalStrict(this: T, x: T): T; lessEqual(x: Tensor): T; lessEqualStrict(this: T, x: T): T; greater(x: Tensor): T; greaterStrict(this: T, x: T): T; greaterEqual(x: Tensor): T; greaterEqualStrict(this: T, x: T): T; logicalAnd(x: Tensor): Tensor; logicalOr(x: Tensor): Tensor; logicalXor(x: Tensor): Tensor; where(condition: Tensor, x: Tensor): Tensor; neg(this: T): T; ceil(this: T): T; floor(this: T): T; exp(this: T): T; log(this: T): T; sqrt(this: T): T; square(this: T): T; abs(this: T): T; clipByValue(min: number, max: number): Tensor; relu(this: T): T; elu(this: T): T; selu(this: T): T; leakyRelu(alpha?: number): Tensor; prelu(alpha: Tensor): Tensor; sigmoid(this: T): T; sin(this: T): T; cos(this: T): T; tan(this: T): T; asin(this: T): T; acos(this: T): T; atan(this: T): T; sinh(this: T): T; cosh(this: T): T; tanh(this: T): T; step(this: T, alpha?: number): T; softmax(this: T, dim?: number): T; resizeBilinear(this: T, newShape2D: [number, number], alignCorners?: boolean): T; conv1d(this: T, filter: Tensor3D, stride: number, pad: 'valid' | 'same' | number, dimRoundingMode?: 'floor' | 'round' | 'ceil'): T; conv2d(this: T, filter: Tensor4D, strides: [number, number] | number, pad: 'valid' | 'same' | number, dimRoundingMode?: 'floor' | 'round' | 'ceil'): T; conv2dTranspose(this: T, filter: Tensor4D, outputShape: [number, number, number, number] | [number, number, number], strides: [number, number] | number, pad: 'valid' | 'same' | number, dimRoundingMode?: 'floor' | 'round' | 'ceil'): T; depthwiseConv2D(this: T, filter: Tensor4D, strides: [number, number] | number, pad: 'valid' | 'same' | number, dilations?: [number, number] | number, dimRoundingMode?: 'floor' | 'round' | 'ceil'): T; avgPool(this: T, filterSize: [number, number] | number, strides: [number, number] | number, pad: 'valid' | 'same' | number, dimRoundingMode?: 'floor' | 'round' | 'ceil'): T; maxPool(this: T, filterSize: [number, number] | number, strides: [number, number] | number, pad: 'valid' | 'same' | number, dimRoundingMode?: 'floor' | 'round' | 'ceil'): T; minPool(this: T, filterSize: [number, number] | number, strides: [number, number] | number, pad: 'valid' | 'same' | number, dimRoundingMode?: 'floor' | 'round' | 'ceil'): T; localResponseNormalization(this: T, radius?: number, bias?: number, alpha?: number, beta?: number, normRegion?: 'acrossChannels' | 'withinChannel'): T; variable(trainable?: boolean, name?: string, dtype?: DataType): Variable; } export declare class Scalar extends Tensor { static new(value: number | boolean, dtype?: DataType): Scalar; } export declare class Tensor1D extends Tensor { static new(values: DataTypeMap[D] | number[] | boolean[], dtype?: D): Tensor1D; } export declare class Tensor2D extends Tensor { static new(shape: [number, number], values: DataTypeMap[D] | number[] | number[][] | boolean[] | boolean[][], dtype?: D): Tensor2D; } export declare class Tensor3D extends Tensor { static new(shape: [number, number, number], values: DataTypeMap[D] | number[] | number[][][] | boolean[] | boolean[][][], dtype?: D): Tensor3D; } export declare class Tensor4D extends Tensor { static new(shape: [number, number, number, number], values: DataTypeMap[D] | number[] | number[][][][] | boolean[] | boolean[][][][], dtype?: D): Tensor4D; } export declare class Variable extends Tensor { trainable: boolean; private static nextVarId; name: string; private constructor(); static variable(initialValue: Tensor, trainable?: boolean, name?: string, dtype?: DataType): Variable; assign(newValue: Tensor): void; } declare const variable: typeof Variable.variable; export { variable }; export { Tensor as NDArray, Tensor1D as Array1D, Tensor2D as Array2D, Tensor3D as Array3D, Tensor4D as Array4D };