@ai-on-browser/data-analysis-models
Version:
Data analysis model package without any dependencies
292 lines (291 loc) • 9.53 kB
TypeScript
/**
* Tensor class
*/
export default class Tensor {
/**
* Returns a tensor filled with 0.
* @overload
* @param {...number} size Sizes for each dimension
* @returns {Tensor} Tensor filled with 0
*/
static zeros(...size: number[]): Tensor;
/**
* Returns a tensor filled with 0.
* @overload
* @param {number[]} size Sizes for each dimension
* @returns {Tensor} Tensor filled with 0
*/
static zeros(size: number[]): Tensor;
/**
* Returns a tensor filled with 1.
* @overload
* @param {...number} size Sizes for each dimension
* @returns {Tensor} Tensor filled with 1
*/
static ones(...size: number[]): Tensor;
/**
* Returns a tensor filled with 1.
* @overload
* @param {number[]} size Sizes for each dimension
* @returns {Tensor} Tensor filled with 1
*/
static ones(size: number[]): Tensor;
/**
* Returns a tensor initialized uniform random values.
* @param {number[]} size Sizes for each dimension
* @param {number} [min] Minimum value of the Tensor
* @param {number} [max] Maximum value of the Tensor
* @returns {Tensor} Tensor initialized uniform random values
*/
static random(size: number[], min?: number, max?: number): Tensor;
/**
* Returns a tensor initialized normal random values.
* @param {number[]} size Sizes for each dimension
* @param {number} [myu] Mean value of the Tensor
* @param {number} [sigma] Variance value of the Tensor
* @returns {Tensor} Tensor initialized normal random values
*/
static randn(size: number[], myu?: number, sigma?: number): Tensor;
/**
* Returns a tensor from some value.
* @param {Tensor | Matrix | Array<number> | number} arr Original values
* @returns {Tensor} Tensor from some value
*/
static fromArray(arr: Tensor | Matrix | Array<number> | number): Tensor;
/**
* @param {number[]} size Sizes for each dimension
* @param {number | number[]} [value] Initial values
*/
constructor(size: number[], value?: number | number[]);
/** @private */
private _size;
/** @private */
private _length;
/** @private */
private _value;
/** @private */
private _offset;
/**
* Dimension of the tensor.
* @type {number}
*/
get dimension(): number;
/**
* Sizes of the tensor.
* @type {number[]}
*/
get sizes(): number[];
/**
* Number of all elements in the tensor.
* @type {number}
*/
get length(): number;
/**
* Elements in the tensor.
* @type {number[]}
*/
get value(): number[];
/**
* Returns a nested array represented this tensor.
* @returns {Array<number>} Nested array
*/
toArray(): Array<number>;
/**
* Returns a string represented this tensor.
* @returns {string} String represented this tensor
*/
toString(): string;
/**
* Returns a Matrix if the dimension of this tensor is 2.
* @returns {Matrix} Matrix
* @throws {MatrixException} If the dimension of this tensor is not 2.
*/
toMatrix(): Matrix;
/**
* Returns the only element.
* @returns {number} The only element
*/
toScaler(): number;
_to_position(...i: any[]): number;
_to_index(p: any): any[];
/**
* Returns a copy of this tensor.
* @returns {Tensor} Copied tensor
*/
copy(): Tensor;
/**
* Returns this tensor is equals to the others.
* @param {*} other Check tensor
* @returns {boolean} `true` if equal
*/
equals(other: any): boolean;
/**
* Returns value at the index position.
* @overload
* @param {...number} i Index values
* @returns {number} The value
*/
at(...i: number[]): number;
/**
* Returns value at the index position.
* @overload
* @param {number[]} i Index values
* @returns {number} The value
*/
at(i: number[]): number;
/**
* Returns tensor at the index position.
* @overload
* @param {...number} i Index values
* @returns {Tensor} Sub tensor
*/
index(...i: number[]): Tensor;
/**
* Returns tensor at the index position.
* @overload
* @param {number[]} i Index values
* @returns {Tensor} Sub tensor
*/
index(i: number[]): Tensor;
/**
* Set the value at the specific position.
* @param {number | number[]} i Index values
* @param {number} value Set value
*/
set(i: number | number[], value: number): void;
/**
* Returns the sub-tensor corresponding to position i in the first dimension of this.
* @param {number | number[]} idx Select index value(s)
* @param {number} [axis] Axis
* @returns {Tensor} Selected tensor
*/
select(idx: number | number[], axis?: number): Tensor;
/**
* Returns a tensor sliced by first dimension.
* @param {number} from Start index
* @param {number} to End index
* @param {number} [axis] Axis
* @returns {Tensor} Sliced tensor
*/
slice(from: number, to: number, axis?: number): Tensor;
/**
* Fill in all the elements with the value.
* @param {number} value Filled value
*/
fill(value: number): void;
/**
* Iterate over all the elements and replace the value.
* @param {function (number, number[], Tensor): number} cb Mapping function
*/
map(cb: (arg0: number, arg1: number[], arg2: Tensor) => number): void;
/**
* Iterate over all the elements.
* @param {function (number, number[], Tensor): void} cb Callback function
*/
forEach(cb: (arg0: number, arg1: number[], arg2: Tensor) => void): void;
/**
* Returns a tensor transposed along the axis.
* @param {...number} axises Selected axises
* @returns {Tensor} Transposed tensor
*/
/**
* Returns a tensor transposed along the axis.
* @param {number[]} axises Selected axises
* @returns {Tensor} Transposed tensor
*/
/**
* @param {...number | number[]} axises Selected axises
* @returns {Tensor} Transposed tensor
*/
transpose(...axises: (number | number[])[]): Tensor;
/**
* Flip values along the axis.
* @param {number} [axis] Axis to be flipped
*/
flip(axis?: number): void;
/**
* Shuffle along the axis.
* @param {number} [axis] Axis
*/
shuffle(axis?: number): void;
/**
* Resize this tensor.
* @param {number[]} sizes New sizes
* @param {number} [init] Value of the extended region
*/
resize(sizes: number[], init?: number): void;
/**
* Reshape this as the sizes.
* @overload
* @param {...number} sizes New sizes for each dimension
*/
reshape(...sizes: number[]): any;
/**
* Reshape this as the sizes.
* @overload
* @param {number[]} sizes New sizes for each dimension
*/
reshape(sizes: number[]): any;
/**
* Repeat the elements n times along the axis this.
* @overload
* @param {number} n Repeated count
* @param {number} [axis] Axis to be repeated
*/
repeat(n: number, axis?: number): any;
/**
* Repeat the elements n times along the axis this.
* @overload
* @param {number[]} n Repeated counts of each axis
*/
repeat(n: number[]): any;
/**
* Concatenate this and t.
* @param {Tensor} t Concatenate tensor
* @param {number} [axis] Axis to be concatenated
*/
concat(t: Tensor, axis?: number): void;
/**
* Returns a tensor reduced along all element with the callback function.
* @overload
* @param {function (number, number, number[], Tensor): number} cb Reducing function
* @param {*} [init] Initial value
* @returns {number} Reduced tensor or value
*/
reduce(cb: (arg0: number, arg1: number, arg2: number[], arg3: Tensor) => number, init?: any): number;
/**
* Returns a tensor reduced along the axis with the callback function.
* @overload
* @param {function (number, number, number[], Tensor): number} cb Reducing function
* @param {*} init Initial value
* @param {number | number[]} axis Axis to be reduced. If negative, reduce along all elements.
* @param {boolean} [keepdims] Keep dimensions or not.
* @returns {Tensor | number} Reduced tensor or value
*/
reduce(cb: (arg0: number, arg1: number, arg2: number[], arg3: Tensor) => number, init: any, axis: number | number[], keepdims?: boolean): Tensor | number;
/**
* Apply function for all elements with broadcasting.
* @param {Tensor | Matrix | number} o Applied value
* @param {function (number, number): number} fn Applied function
*/
broadcastOperate(o: Tensor | Matrix | number, fn: (arg0: number, arg1: number) => number): void;
/**
* Apply function to the position.
* @param {number | number[]} i Index values
* @param {function (number): number} [fn] Applied function
* @returns {number} Old value
*/
operateAt(i: number | number[], fn?: (arg0: number) => number): number;
/**
* Returns a tensor product value.
* @param {Matrix} o Right matrix
* @returns {Tensor} Producted tensor
*/
dot(o: Matrix): Tensor;
/**
* Iterate over the elements.
* @yields {number}
*/
[Symbol.iterator](): Generator<any, void, undefined>;
}
import Matrix from './matrix.js';