Completed
Push — develop ( e5d39e...c506a8 )
by Arkadiusz
03:32
created

Sigma::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
dl 0
loc 5
c 1
b 0
f 1
rs 9.4285
cc 1
eloc 3
nc 1
nop 2
1
<?php
2
3
declare (strict_types = 1);
4
5
namespace Phpml\NeuralNetwork\Training\Backpropagation;
6
7
use Phpml\NeuralNetwork\Node\Neuron;
8
9
class Sigma
10
{
11
    /**
12
     * @var Neuron
13
     */
14
    private $neuron;
15
16
    /**
17
     * @var float
18
     */
19
    private $sigma;
20
21
    /**
22
     * @param Neuron $neuron
23
     * @param float  $sigma
24
     */
25
    public function __construct(Neuron $neuron, $sigma)
26
    {
27
        $this->neuron = $neuron;
28
        $this->sigma = $sigma;
29
    }
30
31
    /**
32
     * @return Neuron
33
     */
34
    public function getNeuron()
35
    {
36
        return $this->neuron;
37
    }
38
39
    /**
40
     * @return float
41
     */
42
    public function getSigma()
43
    {
44
        return $this->sigma;
45
    }
46
47
    /**
48
     * @param Neuron $neuron
49
     *
50
     * @return float
51
     */
52
    public function getSigmaForNeuron(Neuron $neuron): float
53
    {
54
        $sigma = 0.0;
55
56
        foreach ($this->neuron->getSynapses() as $synapse) {
57
            if ($synapse->getNode() == $neuron) {
58
                $sigma += $synapse->getWeight() * $this->getSigma();
59
            }
60
        }
61
62
        return $sigma;
63
    }
64
}
65