Advertisement
Nixsy

Untitled

Jun 2nd, 2023
815
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. class NeuralNetwork {
  2.  
  3.   constructor(inputNodes, hiddenNodes, outputNodes) {
  4.     this.inputNodes = inputNodes;
  5.     this.hiddenNodes = hiddenNodes;
  6.     this.outputNodes = outputNodes;
  7.  
  8.     this.weights = new Array(inputNodes * hiddenNodes);
  9.     this.biases = new Array(hiddenNodes);
  10.  
  11.     for (var i = 0; i < inputNodes * hiddenNodes; i++) {
  12.       this.weights[i] = Math.random();
  13.     }
  14.  
  15.     for (var i = 0; i < hiddenNodes; i++) {
  16.       this.biases[i] = Math.random();
  17.     }
  18.   }
  19.  
  20.   train(inputs, outputs) {
  21.     // Forward pass
  22.     var hiddenOutputs = new Array(hiddenNodes);
  23.     for (var i = 0; i < inputNodes; i++) {
  24.       for (var j = 0; j < hiddenNodes; j++) {
  25.         hiddenOutputs[j] += inputs[i] * this.weights[i * hiddenNodes + j];
  26.       }
  27.     }
  28.  
  29.     for (var j = 0; j < hiddenNodes; j++) {
  30.       hiddenOutputs[j] += this.biases[j];
  31.     }
  32.  
  33.     // Backpropagation
  34.     var error = new Array(outputNodes);
  35.     for (var i = 0; i < outputNodes; i++) {
  36.       error[i] = outputs[i] - hiddenOutputs[i];
  37.     }
  38.  
  39.     for (var j = 0; j < hiddenNodes; j++) {
  40.       for (var i = 0; i < inputNodes; i++) {
  41.         this.weights[i * hiddenNodes + j] += error[j] * hiddenOutputs[j] * inputs[i];
  42.       }
  43.     }
  44.  
  45.     for (var j = 0; j < hiddenNodes; j++) {
  46.       this.biases[j] += error[j] * hiddenOutputs[j];
  47.     }
  48.   }
  49.  
  50.   predict(inputs) {
  51.     // Forward pass
  52.     var hiddenOutputs = new Array(hiddenNodes);
  53.     for (var i = 0; i < inputNodes; i++) {
  54.       for (var j = 0; j < hiddenNodes; j++) {
  55.         hiddenOutputs[j] += inputs[i] * this.weights[i * hiddenNodes + j];
  56.       }
  57.     }
  58.  
  59.     for (var j = 0; j < hiddenNodes; j++) {
  60.       hiddenOutputs[j] += this.biases[j];
  61.     }
  62.  
  63.     // Output
  64.     var outputs = new Array(outputNodes);
  65.     for (var j = 0; j < outputNodes; j++) {
  66.       outputs[j] = hiddenOutputs[j];
  67.     }
  68.  
  69.     return outputs;
  70.   }
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement