@astermind/astermind-elm
Version:
JavaScript Extreme Learning Machine (ELM) library for browser and Node.js.
52 lines (51 loc) • 1.9 kB
TypeScript
export interface EncoderLike {
/** Return hidden/embedding for a batch of vectors: (N x Din) -> (N x Dout) */
getEmbedding(X: number[][]): number[][];
/** Optional name for debugging / summary */
name?: string;
}
export interface ChainOptions {
/** L2-normalize rows after each encoder (default: false) */
normalizeEach?: boolean;
/** L2-normalize rows at the end (default: false) */
normalizeFinal?: boolean;
/** Check that each stage receives non-empty batch and consistent dims (default: true) */
validate?: boolean;
/** Throw if any encoder throws (default: true). If false, bubbles partial outputs. */
strict?: boolean;
/** Optional chain name used in logs & summary */
name?: string;
}
export declare class ELMChain {
private encoders;
private opts;
private lastDims;
constructor(encoders?: EncoderLike[], opts?: ChainOptions);
/** Add encoder at end */
add(encoder: EncoderLike): void;
/** Insert encoder at position (0..length) */
insertAt(index: number, encoder: EncoderLike): void;
/** Remove encoder at index; returns removed or undefined */
removeAt(index: number): EncoderLike | undefined;
/** Remove all encoders */
clear(): void;
/** Number of stages */
length(): number;
/** Human-friendly overview (dims are filled after the first successful run) */
summary(): string;
/**
* Compute embeddings.
* Overloads allow a single vector or a batch.
*/
getEmbedding(input: number[]): number[];
getEmbedding(input: number[][]): number[][];
/**
* Run once to collect per-stage timings (ms) and final dims.
* Returns { timings, dims } where dims[i] is input dim to stage i,
* dims[i+1] is that stage’s output dim.
*/
profile(input: number[] | number[][]): {
timings: number[];
dims: number[];
};
}