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

Sigma   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 1
Bugs 0 Features 1
Metric Value
dl 0
loc 56
c 1
b 0
f 1
wmc 6
lcom 1
cbo 2
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A getNeuron() 0 4 1
A getSigma() 0 4 1
A getSigmaForNeuron() 0 12 3
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