neuralnetwork
Version:
Rudimentary Neural Network in Typescript
65 lines (47 loc) • 1.32 kB
text/typescript
//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);
}
}