@thi.ng/tensors 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +46 -0
- package/LICENSE +201 -0
- package/README.md +307 -0
- package/abs.d.ts +37 -0
- package/abs.js +14 -0
- package/add.d.ts +42 -0
- package/add.js +15 -0
- package/addn.d.ts +42 -0
- package/addn.js +15 -0
- package/api.d.ts +137 -0
- package/api.js +0 -0
- package/clamp.d.ts +47 -0
- package/clamp.js +15 -0
- package/clampn.d.ts +47 -0
- package/clampn.js +15 -0
- package/cos.d.ts +37 -0
- package/cos.js +14 -0
- package/defopn.d.ts +13 -0
- package/defopn.js +65 -0
- package/defoprt.d.ts +14 -0
- package/defoprt.js +77 -0
- package/defoprtt.d.ts +14 -0
- package/defoprtt.js +113 -0
- package/defopt.d.ts +13 -0
- package/defopt.js +109 -0
- package/defoptn.d.ts +13 -0
- package/defoptn.js +109 -0
- package/defoptnn.d.ts +13 -0
- package/defoptnn.js +109 -0
- package/defoptt.d.ts +13 -0
- package/defoptt.js +144 -0
- package/defopttt.d.ts +13 -0
- package/defopttt.js +177 -0
- package/div.d.ts +42 -0
- package/div.js +15 -0
- package/divn.d.ts +42 -0
- package/divn.js +15 -0
- package/dot.d.ts +31 -0
- package/dot.js +17 -0
- package/errors.d.ts +15 -0
- package/errors.js +9 -0
- package/exp.d.ts +37 -0
- package/exp.js +14 -0
- package/exp2.d.ts +37 -0
- package/exp2.js +14 -0
- package/format.d.ts +14 -0
- package/format.js +37 -0
- package/identity.d.ts +4 -0
- package/identity.js +11 -0
- package/index.d.ts +60 -0
- package/index.js +59 -0
- package/log.d.ts +37 -0
- package/log.js +14 -0
- package/log2.d.ts +37 -0
- package/log2.js +14 -0
- package/mag.d.ts +3 -0
- package/mag.js +5 -0
- package/magsq.d.ts +31 -0
- package/magsq.js +17 -0
- package/max.d.ts +37 -0
- package/max.js +14 -0
- package/maxn.d.ts +42 -0
- package/maxn.js +14 -0
- package/min.d.ts +37 -0
- package/min.js +14 -0
- package/minn.d.ts +42 -0
- package/minn.js +14 -0
- package/mul.d.ts +42 -0
- package/mul.js +15 -0
- package/mulm.d.ts +12 -0
- package/mulm.js +49 -0
- package/muln.d.ts +42 -0
- package/muln.js +15 -0
- package/mulv.d.ts +11 -0
- package/mulv.js +39 -0
- package/normalize.d.ts +3 -0
- package/normalize.js +11 -0
- package/package.json +261 -0
- package/pow.d.ts +37 -0
- package/pow.js +14 -0
- package/pown.d.ts +42 -0
- package/pown.js +14 -0
- package/product.d.ts +31 -0
- package/product.js +15 -0
- package/rand-distrib.d.ts +49 -0
- package/rand-distrib.js +52 -0
- package/relu.d.ts +37 -0
- package/relu.js +14 -0
- package/relun.d.ts +43 -0
- package/relun.js +14 -0
- package/select.d.ts +91 -0
- package/select.js +111 -0
- package/set.d.ts +8 -0
- package/set.js +14 -0
- package/setn.d.ts +8 -0
- package/setn.js +14 -0
- package/sigmoid.d.ts +39 -0
- package/sigmoid.js +15 -0
- package/sin.d.ts +37 -0
- package/sin.js +14 -0
- package/softmax.d.ts +27 -0
- package/softmax.js +10 -0
- package/softplus.d.ts +48 -0
- package/softplus.js +15 -0
- package/sqrt.d.ts +37 -0
- package/sqrt.js +14 -0
- package/step.d.ts +48 -0
- package/step.js +14 -0
- package/storage.d.ts +3 -0
- package/storage.js +32 -0
- package/sub.d.ts +42 -0
- package/sub.js +15 -0
- package/subn.d.ts +42 -0
- package/subn.js +15 -0
- package/sum.d.ts +31 -0
- package/sum.js +15 -0
- package/tan.d.ts +37 -0
- package/tan.js +14 -0
- package/tanh.d.ts +37 -0
- package/tanh.js +14 -0
- package/tensor.d.ts +127 -0
- package/tensor.js +517 -0
- package/top.d.ts +16 -0
- package/top.js +15 -0
package/subn.d.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Componentwise nD tensor subtraction with uniform scalar `n`. Writes result to
|
|
3
|
+
* `out`. If `out` is null, mutates `a`. Multi-method.
|
|
4
|
+
*
|
|
5
|
+
* @param out - output tensor
|
|
6
|
+
* @param a - input tensor
|
|
7
|
+
* @param n - scalar
|
|
8
|
+
*/
|
|
9
|
+
export declare const subN: import("./api.js").MultiTensorOpTN<number>;
|
|
10
|
+
/**
|
|
11
|
+
* Same as {@link subN} for 1D tensors.
|
|
12
|
+
*
|
|
13
|
+
* @param out - output tensor
|
|
14
|
+
* @param a - input tensor
|
|
15
|
+
* @param n - scalar
|
|
16
|
+
*/
|
|
17
|
+
export declare const subN1: import("./api.js").TensorOpTN<number, number, import("./tensor.js").Tensor1<number>, import("./tensor.js").Tensor1<number>>;
|
|
18
|
+
/**
|
|
19
|
+
* Same as {@link subN} for 2D tensors.
|
|
20
|
+
*
|
|
21
|
+
* @param out - output tensor
|
|
22
|
+
* @param a - input tensor
|
|
23
|
+
* @param n - scalar
|
|
24
|
+
*/
|
|
25
|
+
export declare const subN2: import("./api.js").TensorOpTN<number, number, import("./tensor.js").Tensor2<number>, import("./tensor.js").Tensor2<number>>;
|
|
26
|
+
/**
|
|
27
|
+
* Same as {@link subN} for 3D tensors.
|
|
28
|
+
*
|
|
29
|
+
* @param out - output tensor
|
|
30
|
+
* @param a - input tensor
|
|
31
|
+
* @param n - scalar
|
|
32
|
+
*/
|
|
33
|
+
export declare const subN3: import("./api.js").TensorOpTN<number, number, import("./tensor.js").Tensor3<number>, import("./tensor.js").Tensor3<number>>;
|
|
34
|
+
/**
|
|
35
|
+
* Same as {@link subN} for 4D tensors.
|
|
36
|
+
*
|
|
37
|
+
* @param out - output tensor
|
|
38
|
+
* @param a - input tensor
|
|
39
|
+
* @param n - scalar
|
|
40
|
+
*/
|
|
41
|
+
export declare const subN4: import("./api.js").TensorOpTN<number, number, import("./tensor.js").Tensor4<number>, import("./tensor.js").Tensor4<number>>;
|
|
42
|
+
//# sourceMappingURL=subn.d.ts.map
|
package/subn.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { $sub } from "@thi.ng/vectors/ops";
|
|
2
|
+
import { defOpTN } from "./defoptn.js";
|
|
3
|
+
const [a, b, c, d, e] = defOpTN($sub);
|
|
4
|
+
const subN = a;
|
|
5
|
+
const subN1 = b;
|
|
6
|
+
const subN2 = c;
|
|
7
|
+
const subN3 = d;
|
|
8
|
+
const subN4 = e;
|
|
9
|
+
export {
|
|
10
|
+
subN,
|
|
11
|
+
subN1,
|
|
12
|
+
subN2,
|
|
13
|
+
subN3,
|
|
14
|
+
subN4
|
|
15
|
+
};
|
package/sum.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Componentwise sum of given nD tensor. Multi-method.
|
|
3
|
+
*
|
|
4
|
+
* @param a - input tensor
|
|
5
|
+
*/
|
|
6
|
+
export declare const sum: import("./api.js").MultiTensorOpRT<number, number>;
|
|
7
|
+
/**
|
|
8
|
+
* Componentwise sum of given 1D tensor.
|
|
9
|
+
*
|
|
10
|
+
* @param a - input tensor
|
|
11
|
+
*/
|
|
12
|
+
export declare const sum1: import("./api.js").TensorOpRT<number, number, import("./tensor.js").Tensor1<number>>;
|
|
13
|
+
/**
|
|
14
|
+
* Componentwise sum of given 2D tensor.
|
|
15
|
+
*
|
|
16
|
+
* @param a - input tensor
|
|
17
|
+
*/
|
|
18
|
+
export declare const sum2: import("./api.js").TensorOpRT<number, number, import("./tensor.js").Tensor2<number>>;
|
|
19
|
+
/**
|
|
20
|
+
* Componentwise sum of given 3D tensor.
|
|
21
|
+
*
|
|
22
|
+
* @param a - input tensor
|
|
23
|
+
*/
|
|
24
|
+
export declare const sum3: import("./api.js").TensorOpRT<number, number, import("./tensor.js").Tensor3<number>>;
|
|
25
|
+
/**
|
|
26
|
+
* Componentwise sum of given 4D tensor.
|
|
27
|
+
*
|
|
28
|
+
* @param a - input tensor
|
|
29
|
+
*/
|
|
30
|
+
export declare const sum4: import("./api.js").TensorOpRT<number, number, import("./tensor.js").Tensor4<number>>;
|
|
31
|
+
//# sourceMappingURL=sum.d.ts.map
|
package/sum.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { $add } from "@thi.ng/vectors/ops";
|
|
2
|
+
import { defOpRT } from "./defoprt.js";
|
|
3
|
+
const [a, b, c, d, e] = defOpRT($add, () => 0);
|
|
4
|
+
const sum = a;
|
|
5
|
+
const sum1 = b;
|
|
6
|
+
const sum2 = c;
|
|
7
|
+
const sum3 = d;
|
|
8
|
+
const sum4 = e;
|
|
9
|
+
export {
|
|
10
|
+
sum,
|
|
11
|
+
sum1,
|
|
12
|
+
sum2,
|
|
13
|
+
sum3,
|
|
14
|
+
sum4
|
|
15
|
+
};
|
package/tan.d.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Componentwise computes `Math.tan` of given nD tensor and writes result to
|
|
3
|
+
* `out`. If `out` is null, mutates original. Multi-method.
|
|
4
|
+
*
|
|
5
|
+
* @param out - output tensor
|
|
6
|
+
* @param a - input tensor
|
|
7
|
+
*/
|
|
8
|
+
export declare const tan: import("./api.js").MultiTensorOpT<number>;
|
|
9
|
+
/**
|
|
10
|
+
* Same as {@link tan} for 1D tensors.
|
|
11
|
+
*
|
|
12
|
+
* @param out - output tensor
|
|
13
|
+
* @param a - input tensor
|
|
14
|
+
*/
|
|
15
|
+
export declare const tan1: import("./api.js").TensorOpT<number, number, import("./tensor.js").Tensor1<number>, import("./tensor.js").Tensor1<number>>;
|
|
16
|
+
/**
|
|
17
|
+
* Same as {@link tan} for 2D tensors.
|
|
18
|
+
*
|
|
19
|
+
* @param out - output tensor
|
|
20
|
+
* @param a - input tensor
|
|
21
|
+
*/
|
|
22
|
+
export declare const tan2: import("./api.js").TensorOpT<number, number, import("./tensor.js").Tensor2<number>, import("./tensor.js").Tensor2<number>>;
|
|
23
|
+
/**
|
|
24
|
+
* Same as {@link tan} for 3D tensors.
|
|
25
|
+
*
|
|
26
|
+
* @param out - output tensor
|
|
27
|
+
* @param a - input tensor
|
|
28
|
+
*/
|
|
29
|
+
export declare const tan3: import("./api.js").TensorOpT<number, number, import("./tensor.js").Tensor3<number>, import("./tensor.js").Tensor3<number>>;
|
|
30
|
+
/**
|
|
31
|
+
* Same as {@link tan} for 4D tensors.
|
|
32
|
+
*
|
|
33
|
+
* @param out - output tensor
|
|
34
|
+
* @param a - input tensor
|
|
35
|
+
*/
|
|
36
|
+
export declare const tan4: import("./api.js").TensorOpT<number, number, import("./tensor.js").Tensor4<number>, import("./tensor.js").Tensor4<number>>;
|
|
37
|
+
//# sourceMappingURL=tan.d.ts.map
|
package/tan.js
ADDED
package/tanh.d.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Componentwise computes `Math.tanh` of given nD tensor and writes result to
|
|
3
|
+
* `out`. If `out` is null, mutates original. Multi-method.
|
|
4
|
+
*
|
|
5
|
+
* @param out - output tensor
|
|
6
|
+
* @param a - input tensor
|
|
7
|
+
*/
|
|
8
|
+
export declare const tanh: import("./api.js").MultiTensorOpT<number>;
|
|
9
|
+
/**
|
|
10
|
+
* Same as {@link tanh} for 1D tensors.
|
|
11
|
+
*
|
|
12
|
+
* @param out - output tensor
|
|
13
|
+
* @param a - input tensor
|
|
14
|
+
*/
|
|
15
|
+
export declare const tanh1: import("./api.js").TensorOpT<number, number, import("./tensor.js").Tensor1<number>, import("./tensor.js").Tensor1<number>>;
|
|
16
|
+
/**
|
|
17
|
+
* Same as {@link tanh} for 2D tensors.
|
|
18
|
+
*
|
|
19
|
+
* @param out - output tensor
|
|
20
|
+
* @param a - input tensor
|
|
21
|
+
*/
|
|
22
|
+
export declare const tanh2: import("./api.js").TensorOpT<number, number, import("./tensor.js").Tensor2<number>, import("./tensor.js").Tensor2<number>>;
|
|
23
|
+
/**
|
|
24
|
+
* Same as {@link tanh} for 3D tensors.
|
|
25
|
+
*
|
|
26
|
+
* @param out - output tensor
|
|
27
|
+
* @param a - input tensor
|
|
28
|
+
*/
|
|
29
|
+
export declare const tanh3: import("./api.js").TensorOpT<number, number, import("./tensor.js").Tensor3<number>, import("./tensor.js").Tensor3<number>>;
|
|
30
|
+
/**
|
|
31
|
+
* Same as {@link tanh} for 4D tensors.
|
|
32
|
+
*
|
|
33
|
+
* @param out - output tensor
|
|
34
|
+
* @param a - input tensor
|
|
35
|
+
*/
|
|
36
|
+
export declare const tanh4: import("./api.js").TensorOpT<number, number, import("./tensor.js").Tensor4<number>, import("./tensor.js").Tensor4<number>>;
|
|
37
|
+
//# sourceMappingURL=tanh.d.ts.map
|
package/tanh.js
ADDED
package/tensor.d.ts
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import type { Maybe, NumericArray } from "@thi.ng/api";
|
|
2
|
+
import type { ITensor, ITensorStorage, Nested, NestedTensor, NumType, Shape, ShapeTensor, TensorCtor, TensorData, TensorFromArrayOpts, TensorOpts, Type, TypeMap } from "./api.js";
|
|
3
|
+
export declare abstract class ATensor<T = number> implements ITensor<T> {
|
|
4
|
+
type: Type;
|
|
5
|
+
storage: ITensorStorage<T>;
|
|
6
|
+
data: TensorData<T>;
|
|
7
|
+
shape: number[];
|
|
8
|
+
stride: number[];
|
|
9
|
+
offset: number;
|
|
10
|
+
constructor(type: Type, storage: ITensorStorage<T>, data: TensorData<T>, shape: number[], stride: number[], offset?: number);
|
|
11
|
+
abstract get dim(): number;
|
|
12
|
+
abstract get length(): number;
|
|
13
|
+
get order(): number[];
|
|
14
|
+
get orderedShape(): number[];
|
|
15
|
+
get orderedStride(): number[];
|
|
16
|
+
abstract [Symbol.iterator](): IterableIterator<T>;
|
|
17
|
+
copy(): typeof this;
|
|
18
|
+
empty(storage?: ITensorStorage<T>): typeof this;
|
|
19
|
+
equiv(o: any): boolean;
|
|
20
|
+
eqDelta(o: ITensor<T>, eps?: number): boolean;
|
|
21
|
+
abstract index(pos: NumericArray): number;
|
|
22
|
+
abstract get(pos: NumericArray): T;
|
|
23
|
+
abstract set(pos: NumericArray, v: T): this;
|
|
24
|
+
hi(pos: NumericArray): this;
|
|
25
|
+
lo(pos: NumericArray): this;
|
|
26
|
+
step(select: NumericArray): typeof this;
|
|
27
|
+
pick(select: NumericArray): ITensor<T>;
|
|
28
|
+
pack(storage?: ITensorStorage<T>): typeof this;
|
|
29
|
+
reshape<S extends Shape>(newShape: S, newStride?: S): ShapeTensor<S, T>;
|
|
30
|
+
abstract resize<S extends Shape>(newShape: S, fill?: T, storage?: ITensorStorage<T>): ShapeTensor<S, T>;
|
|
31
|
+
transpose(order: NumericArray): typeof this;
|
|
32
|
+
abstract toString(): string;
|
|
33
|
+
toJSON(): {
|
|
34
|
+
buf: T[];
|
|
35
|
+
shape: number[];
|
|
36
|
+
stride: any[];
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export declare class Tensor1<T = number> extends ATensor<T> {
|
|
40
|
+
[Symbol.iterator](): IterableIterator<T>;
|
|
41
|
+
get dim(): number;
|
|
42
|
+
get order(): number[];
|
|
43
|
+
get length(): number;
|
|
44
|
+
index([x]: NumericArray): number;
|
|
45
|
+
get([x]: NumericArray): T;
|
|
46
|
+
set([x]: NumericArray, v: T): this;
|
|
47
|
+
pick([x]: NumericArray): Tensor1<T>;
|
|
48
|
+
resize<S extends Shape>(newShape: S, fill?: T, storage?: ITensorStorage<T>): ShapeTensor<S, T>;
|
|
49
|
+
transpose(_: number[]): this;
|
|
50
|
+
toString(): string;
|
|
51
|
+
}
|
|
52
|
+
export declare class Tensor2<T = number> extends ATensor<T> {
|
|
53
|
+
protected _n: number;
|
|
54
|
+
[Symbol.iterator](): Generator<T, void, unknown>;
|
|
55
|
+
get length(): number;
|
|
56
|
+
get dim(): number;
|
|
57
|
+
get order(): number[];
|
|
58
|
+
index(pos: NumericArray): number;
|
|
59
|
+
get(pos: NumericArray): T;
|
|
60
|
+
set(pos: NumericArray, v: T): this;
|
|
61
|
+
resize<S extends Shape>(newShape: S, fill?: T, storage?: ITensorStorage<T>): ShapeTensor<S, T>;
|
|
62
|
+
toString(): string;
|
|
63
|
+
}
|
|
64
|
+
export declare class Tensor3<T = number> extends ATensor<T> {
|
|
65
|
+
protected _n: number;
|
|
66
|
+
[Symbol.iterator](): Generator<T, void, unknown>;
|
|
67
|
+
get length(): number;
|
|
68
|
+
get dim(): number;
|
|
69
|
+
index(pos: NumericArray): number;
|
|
70
|
+
get(pos: NumericArray): T;
|
|
71
|
+
set(pos: NumericArray, v: T): this;
|
|
72
|
+
resize<S extends Shape>(newShape: S, fill?: T, storage?: ITensorStorage<T>): ShapeTensor<S, T>;
|
|
73
|
+
toString(): string;
|
|
74
|
+
}
|
|
75
|
+
export declare class Tensor4<T = number> extends ATensor<T> {
|
|
76
|
+
protected _n: number;
|
|
77
|
+
[Symbol.iterator](): Generator<T, void, unknown>;
|
|
78
|
+
get length(): number;
|
|
79
|
+
get dim(): number;
|
|
80
|
+
index(pos: NumericArray): number;
|
|
81
|
+
get(pos: NumericArray): T;
|
|
82
|
+
set(pos: NumericArray, v: T): this;
|
|
83
|
+
resize<S extends Shape>(newShape: S, fill?: T, storage?: ITensorStorage<T>): ShapeTensor<S, T>;
|
|
84
|
+
toString(): string;
|
|
85
|
+
}
|
|
86
|
+
export declare const TENSOR_IMPLS: Maybe<TensorCtor<any>>[];
|
|
87
|
+
/** Syntax sugar for {@link tensorFromArray}. */
|
|
88
|
+
export declare function tensor<T extends NumType, N extends Nested<number>>(data: N, opts?: TensorFromArrayOpts<T, number>): NestedTensor<N, number>;
|
|
89
|
+
/** Syntax sugar for {@link tensorFromArray}. */
|
|
90
|
+
export declare function tensor<N extends Nested<string>>(data: N, opts?: TensorFromArrayOpts<"str", string>): NestedTensor<N, string>;
|
|
91
|
+
/**
|
|
92
|
+
* Creates a new {@link ITensor} instance for given data type, shape and
|
|
93
|
+
* options.
|
|
94
|
+
*
|
|
95
|
+
* @remarks
|
|
96
|
+
* Currently only 1D - 4D tensors are supported.
|
|
97
|
+
*
|
|
98
|
+
* @param type
|
|
99
|
+
* @param shape
|
|
100
|
+
* @param opts
|
|
101
|
+
*/
|
|
102
|
+
export declare function tensor<T extends Type, S extends Shape>(type: T, shape: S, opts?: TensorOpts<TypeMap[T], S>): ShapeTensor<S, TypeMap[T]>;
|
|
103
|
+
/**
|
|
104
|
+
* Creates a new {@link ITensor} instance from given (possibly nested) numeric
|
|
105
|
+
* array, and options.
|
|
106
|
+
*
|
|
107
|
+
* @remarks
|
|
108
|
+
* Currently only 1D - 4D tensors are supported.
|
|
109
|
+
*
|
|
110
|
+
* @param data
|
|
111
|
+
* @param opts
|
|
112
|
+
*/
|
|
113
|
+
export declare function tensorFromArray<T extends NumType, N extends Nested<number>>(data: N, opts?: TensorFromArrayOpts<T, number>): NestedTensor<N, number>;
|
|
114
|
+
/**
|
|
115
|
+
* Creates a new {@link ITensor} instance from given (possibly nested) string
|
|
116
|
+
* array, and options.
|
|
117
|
+
*
|
|
118
|
+
* @remarks
|
|
119
|
+
* Currently only 1D - 4D tensors are supported.
|
|
120
|
+
*
|
|
121
|
+
* @param data
|
|
122
|
+
* @param opts
|
|
123
|
+
*/
|
|
124
|
+
export declare function tensorFromArray<N extends Nested<string>>(data: N, opts?: TensorFromArrayOpts<"str", string>): NestedTensor<N, string>;
|
|
125
|
+
export declare const shapeToStride: (shape: NumericArray) => any[];
|
|
126
|
+
export declare const strideOrder: (strides: number[]) => number[];
|
|
127
|
+
//# sourceMappingURL=tensor.d.ts.map
|