UNPKG

neuralnetwork

Version:

Rudimentary Neural Network in Typescript

65 lines (47 loc) 1.32 kB
//var key; // Temp variable for copying keys in a loop export interface N { forward(input: number): number, backward(error: number, output?: number) : number } /** * Neural models for layers. * Should contain a name and both forward and backward interfaces */ export class Neuron implements N { name: string; constructor() { this.name = Math.random().toString(36).substring(2); } forward(input: number): number { return input; } backward(error: number, ouput?: number) : number { return error; } } export class IdentityNeuron extends Neuron {} export class BiasNeuron extends Neuron { forward(input: number | null): number { return 1; } backward(error: number | null): number { return 0; } } export class SigmoidNeuron extends Neuron { forward(input: number): number { return 1.0 / (1.0 + Math.exp(-input)); } // Output is the activation value created by forward backward(err: number, output: number): number { return output * (1 - output) * err; } } export class RectifiedLinearNeuron extends Neuron { forward(input: number): number { return Math.max(0, input); } backward(err: number, output: number): number { return ((output > 0) ? err : 0); } }