mirror of
https://github.com/Llewellynvdm/php-ml.git
synced 2024-11-15 17:57:11 +00:00
d85bfed468
* [cs] remove more unused comments * [cs] remove unused array phpdocs * [cs] remove empty lines in docs * [cs] space-proof useless docs * [cs] remove empty @param lines * [cs] remove references arrays
78 lines
1.5 KiB
PHP
78 lines
1.5 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Phpml\NeuralNetwork\Network;
|
|
|
|
use Phpml\NeuralNetwork\Layer;
|
|
use Phpml\NeuralNetwork\Network;
|
|
use Phpml\NeuralNetwork\Node\Input;
|
|
use Phpml\NeuralNetwork\Node\Neuron;
|
|
|
|
abstract class LayeredNetwork implements Network
|
|
{
|
|
/**
|
|
* @var Layer[]
|
|
*/
|
|
protected $layers;
|
|
|
|
public function addLayer(Layer $layer)
|
|
{
|
|
$this->layers[] = $layer;
|
|
}
|
|
|
|
/**
|
|
* @return Layer[]
|
|
*/
|
|
public function getLayers() : array
|
|
{
|
|
return $this->layers;
|
|
}
|
|
|
|
public function removeLayers()
|
|
{
|
|
unset($this->layers);
|
|
}
|
|
|
|
public function getOutputLayer(): Layer
|
|
{
|
|
return $this->layers[count($this->layers) - 1];
|
|
}
|
|
|
|
public function getOutput() : array
|
|
{
|
|
$result = [];
|
|
foreach ($this->getOutputLayer()->getNodes() as $neuron) {
|
|
$result[] = $neuron->getOutput();
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* @param mixed $input
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function setInput($input)
|
|
{
|
|
$firstLayer = $this->layers[0];
|
|
|
|
foreach ($firstLayer->getNodes() as $key => $neuron) {
|
|
if ($neuron instanceof Input) {
|
|
$neuron->setInput($input[$key]);
|
|
}
|
|
}
|
|
|
|
foreach ($this->getLayers() as $layer) {
|
|
foreach ($layer->getNodes() as $node) {
|
|
if ($node instanceof Neuron) {
|
|
$node->reset();
|
|
}
|
|
}
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
}
|