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); } } } }
/** * @param array $sample * * @return array */ protected function predictSample(array $sample) { return $this->perceptron->setInput($sample)->getOutput(); }