Inheritance: extends LayeredNetwork
Example #1
0
 public function testBackpropagationForXORLearning()
 {
     $network = new MultilayerPerceptron([2, 2, 1]);
     $training = new Backpropagation($network);
     $training->train([[1, 0], [0, 1], [1, 1], [0, 0]], [[1], [1], [0], [0]], $desiredError = 0.3, 40000);
     $this->assertEquals(0, $network->setInput([1, 1])->getOutput()[0], '', $desiredError);
     $this->assertEquals(0, $network->setInput([0, 0])->getOutput()[0], '', $desiredError);
     $this->assertEquals(1, $network->setInput([1, 0])->getOutput()[0], '', $desiredError);
     $this->assertEquals(1, $network->setInput([0, 1])->getOutput()[0], '', $desiredError);
 }
 public function testSynapsesGeneration()
 {
     $mlp = new MultilayerPerceptron([2, 2, 1]);
     $layers = $mlp->getLayers();
     foreach ($layers[1]->getNodes() as $node) {
         if ($node instanceof Neuron) {
             $synapses = $node->getSynapses();
             $this->assertCount(3, $synapses);
             $synapsesNodes = $this->getSynapsesNodes($synapses);
             foreach ($layers[0]->getNodes() as $prevNode) {
                 $this->assertContains($prevNode, $synapsesNodes);
             }
         }
     }
 }
Example #3
0
 /**
  * @param array $sample
  *
  * @return array
  */
 protected function predictSample(array $sample)
 {
     return $this->perceptron->setInput($sample)->getOutput();
 }