function testLayers() { $newLayer = new Layer(1); $this->network->addLayer($newLayer); $layersCount = count($this->network->getLayers()); $this->assertEquals($layersCount, 3); $this->assertEquals($this->network->getLayers()[$layersCount - 1], $this->network->getOutputLayer()); $this->assertEquals($this->network->getOutputLayer(), $newLayer); }
<?php use Neural\Layer; use Neural\MultilayerPerceptron; use Neural\Node\Bias; use Neural\Node\Input; use Neural\Node\Neuron; use Neural\Synapse; require_once '../vendor/autoload.php'; $p = new MultilayerPerceptron([2, 2, 1]); //Equivalent to: $p = new MultilayerPerceptron(); $p->addLayer(new Layer())->toLastLayer()->addNode(new Input())->addNode(new Input())->addNode(new Bias()); $p->addLayer(new Layer())->toLastLayer()->addNode(new Neuron())->addNode(new Neuron())->addNode(new Bias()); $p->addLayer(new Layer())->toLastLayer()->addNode(new Neuron()); //Do not forget to add synapses: $p->generateSynapses(); //Or you may direct the process: $neuronFilter = function ($node) { return $node instanceof Neuron; }; /** @var Neuron $secondLayerNeuron */ $secondLayerNeuron = iterator_to_array($p->getLayers()[1]->getNodes($neuronFilter))[0]; $input = iterator_to_array($p->getLayers()[0]->getNodes())[0]; $secondLayerNeuron->addSynapse(new Synapse($input)); //and so on...