HEX
Server: Apache
System: Linux webm010.cluster103.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
User: iestorre (46869)
PHP: 8.0.30
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/iestorre/moodleAW/moodle310/lib/mlbackend/php/phpml/src/Phpml/NeuralNetwork/Node/Neuron.php
<?php

declare(strict_types=1);

namespace Phpml\NeuralNetwork\Node;

use Phpml\NeuralNetwork\ActivationFunction;
use Phpml\NeuralNetwork\Node\Neuron\Synapse;
use Phpml\NeuralNetwork\Node;

class Neuron implements Node
{
    /**
     * @var Synapse[]
     */
    protected $synapses;

    /**
     * @var ActivationFunction
     */
    protected $activationFunction;

    /**
     * @var float
     */
    protected $output;

    /**
     * @param ActivationFunction|null $activationFunction
     */
    public function __construct(ActivationFunction $activationFunction = null)
    {
        $this->activationFunction = $activationFunction ?: new ActivationFunction\Sigmoid();
        $this->synapses = [];
        $this->output = 0;
    }

    /**
     * @param Synapse $synapse
     */
    public function addSynapse(Synapse $synapse)
    {
        $this->synapses[] = $synapse;
    }

    /**
     * @return Synapse[]
     */
    public function getSynapses()
    {
        return $this->synapses;
    }

    /**
     * @return float
     */
    public function getOutput(): float
    {
        if (0 === $this->output) {
            $sum = 0;
            foreach ($this->synapses as $synapse) {
                $sum += $synapse->getOutput();
            }

            $this->output = $this->activationFunction->compute($sum);
        }

        return $this->output;
    }

    public function reset()
    {
        $this->output = 0;
    }
}