UNPKG

brain.js

Version:

Neural networks in JavaScript

150 lines 5.11 kB
import { Log } from '../feed-forward'; import { INeuralNetworkTrainOptions } from '../neural-network'; import { IDataFormatter, IDataFormatterJSON } from '../utilities/data-formatter'; import { IMatrixJSON, Matrix } from './matrix'; import { Equation } from './matrix/equation'; import { RandomMatrix } from './matrix/random-matrix'; import { IRNNDatum, Value } from './rnn-data-types'; export interface IRNNModel { isInitialized: boolean; input: Matrix; hiddenLayers: IRNNHiddenLayerModel[]; output: Matrix; equations: Equation[]; allMatrices: Matrix[]; equationConnections: Matrix[][]; outputConnector: RandomMatrix | Matrix; } export interface IRNNOptions { inputSize: number; inputRange: number; hiddenLayers: number[]; outputSize: number; decayRate: number; smoothEps: number; regc: number; clipval: number; maxPredictionLength: number; dataFormatter: IDataFormatter; json?: IRNNJSON; } export interface IRNNJSONOptions { inputSize: number; inputRange: number; hiddenLayers: number[]; outputSize: number; decayRate: number; smoothEps: number; regc: number; clipval: number; maxPredictionLength: number; dataFormatter: IDataFormatterJSON; } export interface IRNNTrainingOptions { iterations: number; errorThresh: number; log: boolean | ((status: string) => void); logPeriod: number; learningRate: number; callback?: (status: IRNNStatus) => void; callbackPeriod: number; timeout: number; } export interface IRNNJSONTrainOptions { iterations: number; errorThresh: number; log: boolean | ((status: string) => void); logPeriod: number; learningRate: number; callback?: (status: IRNNStatus) => void; callbackPeriod: number; timeout: number | 'Infinity'; } export declare const trainDefaults: IRNNTrainingOptions; export interface IRNNHiddenLayer { [key: string]: RandomMatrix | Matrix; } export interface IRNNHiddenLayerModel extends IRNNHiddenLayer { weight: RandomMatrix; transition: RandomMatrix; bias: Matrix; } export declare const defaults: () => IRNNOptions; export interface IRNNStatus { iterations: number; error: number; } export interface IRNNPreppedTrainingData { status: IRNNStatus; preparedData: number[][]; endTime: number; } export declare class RNN { options: IRNNOptions; trainOpts: IRNNTrainingOptions; stepCache: { [index: number]: Float32Array; }; runs: number; ratioClipped: number; model: IRNNModel; initialLayerInputs: Matrix[]; constructor(options?: Partial<IRNNOptions & IRNNTrainingOptions>); initialize(): void; createHiddenLayers(): IRNNHiddenLayer[]; getHiddenLayer(hiddenSize: number, prevSize: number): IRNNHiddenLayer; getEquation(equation: Equation, inputMatrix: Matrix, previousResult: Matrix, hiddenLayer: IRNNHiddenLayer): Matrix; createInputMatrix(): RandomMatrix; createOutputMatrices(): { outputConnector: RandomMatrix; output: Matrix; }; bindEquation(): void; mapModel(): IRNNModel; trainInput(input: number[]): number; backpropagate(input: number[]): void; adjustWeights(): void; get isRunnable(): boolean; checkRunnable(): void; run(rawInput?: Value, isSampleI?: boolean, temperature?: number): string; /** * * Verifies network sizes are initialized * If they are not it will initialize them */ verifyIsInitialized(): void; /** * * @param options * Supports all `trainDefaults` properties * also supports: * learningRate: (number), * momentum: (number), * activation: 'sigmoid', 'relu', 'leaky-relu', 'tanh' */ updateTrainingOptions(options: Partial<IRNNTrainingOptions>): void; validateTrainingOptions(options: INeuralNetworkTrainOptions): void; setLogMethod(log: Log | undefined | boolean): void; protected prepTraining(data: Array<Value | IRNNDatum>, options: Partial<IRNNTrainingOptions>): IRNNPreppedTrainingData; train(data: Array<Value | IRNNDatum>, trainOpts?: Partial<IRNNTrainingOptions>): IRNNStatus; addFormat(data: Value): void; formatData(data: Value[]): number[][]; toJSON(): IRNNJSON; fromJSON(json: IRNNJSON): this; toFunction(cb?: (src: string) => string): RNNFunction; trainPattern(input: number[], logErrorRate?: boolean): number; } export interface IRNNJSON { type: string; options: IRNNJSONOptions; trainOpts: IRNNJSONTrainOptions; input: IMatrixJSON; hiddenLayers: Array<{ [index: string]: IMatrixJSON; }>; outputConnector: IMatrixJSON; output: IMatrixJSON; } export declare function last<T>(values: T[]): T; export declare type RNNFunction = (rawInput?: Array<Value | IRNNDatum> | string, isSampleI?: boolean, temperature?: number) => string; //# sourceMappingURL=rnn.d.ts.map