catbrain
Version:
GPU accelerated neural networks made simple for Javascript
82 lines (81 loc) • 2.83 kB
TypeScript
import { GPU, IGPUSettings, IKernelMapRunShortcut, IKernelRunShortcut, KernelOutput } from "gpu.js";
export interface TrainingStatus {
iteration: number;
}
export interface TrainingOptions {
learningRate?: number;
decayRate?: number;
momentum?: number;
dampening?: number;
nesterov?: boolean;
shuffle?: boolean;
enableGPU?: boolean;
callback?: (trainingStatus: TrainingStatus) => void;
}
export interface LayerKernels {
weightedSumAndActivate: IKernelMapRunShortcut<{
[key: string]: KernelOutput;
}>;
updateWeights: IKernelMapRunShortcut<{
[key: string]: KernelOutput;
}>;
calculateErrors: IKernelRunShortcut;
calculateOutputErrors: IKernelRunShortcut;
addBiases: IKernelRunShortcut;
}
export interface CatBrainOptions {
layers: number[];
weights?: ArrayLike<number>[][];
biases?: ArrayLike<number>[];
deltas?: ArrayLike<number>[][];
weightInit?: string;
activation?: string;
outputActivation?: string;
leakyReluAlpha?: number;
reluClip?: number;
momentum?: number;
dampening?: number;
nesterov?: boolean;
learningRate?: number;
decayRate?: number;
shuffle?: boolean;
enableGPU: boolean;
gpuOptions: IGPUSettings;
}
export declare class CatBrain {
layers: number[];
weightInit: string;
activation: string;
outputActivation: string;
leakyReluAlpha: number;
reluClip: number;
momentum: number;
dampening: number;
nesterov: boolean;
learningRate: number;
decayRate: number;
shuffle: boolean;
gpuOptions: IGPUSettings;
enableGPU: boolean;
activationFunc: (x: number, reluClip: number, leakyReluAlpha: number) => number;
derivativeFunc: (x: number, reluClip: number, leakyReluAlpha: number) => number;
outputActivationFunc: (x: number, reluClip: number, leakyReluAlpha: number) => number;
outputDerivativeFunc: (x: number, reluClip: number, leakyReluAlpha: number) => number;
weights: Float32Array[][];
biases: Float32Array[];
deltas: Float32Array[][];
layerValues: Float32Array[];
preActLayerValues: Float32Array[];
errors: Float32Array[];
kernels: LayerKernels[];
gpu: GPU;
constructor(options: CatBrainOptions);
feedForward(inputs: ArrayLike<number>, options?: TrainingOptions): Float32Array;
backPropagate(inputs: ArrayLike<number>, targetInput: ArrayLike<number>, options: TrainingOptions): void;
train(iterations: number, trainingData: {
inputs: ArrayLike<number>;
outputs: ArrayLike<number>;
}[], options?: TrainingOptions): void;
initKernels(layerSize: number, prevLayerSize: number, activationFunc: Function, outputActivationFunc: Function, derivativeFunc: Function, outputDerivativeFunc: Function): LayerKernels;
toJSON(): string;
}