Inheritance: implements Phpml\NeuralNetwork\Node
Esempio n. 1
0
 /**
  * @param Neuron $neuron
  *
  * @return float
  */
 public function getSigmaForNeuron(Neuron $neuron) : float
 {
     $sigma = 0.0;
     foreach ($this->neuron->getSynapses() as $synapse) {
         if ($synapse->getNode() == $neuron) {
             $sigma += $synapse->getWeight() * $this->getSigma();
         }
     }
     return $sigma;
 }
Esempio n. 2
0
 public function testNeuronRefresh()
 {
     $neuron = new Neuron();
     $neuron->getOutput();
     $neuron->addSynapse($this->getSynapseMock());
     $this->assertEquals(0.5, $neuron->getOutput(), '', 0.01);
     $neuron->refresh();
     $this->assertEquals(0.88, $neuron->getOutput(), '', 0.01);
 }
Esempio n. 3
0
 /**
  * @param Neuron $neuron
  * @param array  $target
  * @param int    $key
  * @param bool   $lastLayer
  *
  * @return float
  */
 private function getSigma(Neuron $neuron, array $target, int $key, bool $lastLayer) : float
 {
     $neuronOutput = $neuron->getOutput();
     $sigma = $neuronOutput * (1 - $neuronOutput);
     if ($lastLayer) {
         $sigma *= $target[$key] - $neuronOutput;
     } else {
         $sigma *= $this->getPrevSigma($neuron);
     }
     $this->sigmas[] = new Sigma($neuron, $sigma);
     return $sigma;
 }
Esempio n. 4
0
 /**
  * @param Layer  $currentLayer
  * @param Neuron $nextNeuron
  */
 private function generateNeuronSynapses(Layer $currentLayer, Neuron $nextNeuron)
 {
     foreach ($currentLayer->getNodes() as $currentNeuron) {
         $nextNeuron->addSynapse(new Synapse($currentNeuron));
     }
 }