synaptic_weights = $synaptic_weights; } public function test(array $inputs): int { $inputs = array_merge([1], $inputs); // Add bias input if (count($inputs) !== count($this->synaptic_weights)) { // Check throw new \InvalidArgumentException("Number of inputs must match number of synaptic weights."); } $weighted_sum = array_sum(array_map(fn($input, $weight) => $input * $weight, $inputs, $this->synaptic_weights)); return $this->activationFunction($weighted_sum); } abstract public function activationFunction(float $weighted_sum): int; public function getSynapticWeights(): array { return $this->synaptic_weights; } public function setSynapticWeights(array $synaptic_weights): void { $this->synaptic_weights = $synaptic_weights; } }