* * Expects this.sizes to have been set
()
| 93 | * Expects this.sizes to have been set |
| 94 | */ |
| 95 | _initialize() { |
| 96 | if (!this.sizes) throw new Error ('Sizes must be set before initializing'); |
| 97 | |
| 98 | this.outputLayer = this.sizes.length - 1; |
| 99 | this.biases = []; // weights for bias nodes |
| 100 | this.weights = []; |
| 101 | this.outputs = []; |
| 102 | |
| 103 | // state for training |
| 104 | this.deltas = []; |
| 105 | this.changes = []; // for momentum |
| 106 | this.errors = []; |
| 107 | |
| 108 | for (let layer = 0; layer <= this.outputLayer; layer++) { |
| 109 | let size = this.sizes[layer]; |
| 110 | this.deltas[layer] = zeros(size); |
| 111 | this.errors[layer] = zeros(size); |
| 112 | this.outputs[layer] = zeros(size); |
| 113 | |
| 114 | if (layer > 0) { |
| 115 | this.biases[layer] = randos(size); |
| 116 | this.weights[layer] = new Array(size); |
| 117 | this.changes[layer] = new Array(size); |
| 118 | |
| 119 | for (let node = 0; node < size; node++) { |
| 120 | let prevSize = this.sizes[layer - 1]; |
| 121 | this.weights[layer][node] = randos(prevSize); |
| 122 | this.changes[layer][node] = zeros(prevSize); |
| 123 | } |
| 124 | } |
| 125 | } |
| 126 | |
| 127 | this.setActivation(); |
| 128 | } |
| 129 | |
| 130 | /** |
| 131 | * |
no test coverage detected