public function setUp() { //Take Associated and Reaction Neurons -> in order to test direct and reverse directions $this->_from = Factory::neuron(Factory::ASSOC, 0); $this->_to = Factory::neuron(Factory::REACT, 0); //Init relation $this->_relation = new Relation($this->_from, $this->_to); Net::setMode(Net::TEACHER_MODE); }
/** * @param \Sereban\NeuronNet\Tests\Lib\Relation|null $relation * @return mixed */ public function initWeight(Relation $relation = null) { if (empty($relation)) { $relationClass = new \ReflectionClass("Sereban\\NeuronNet\\Relation"); $relation = $relationClass->newInstance(Factory::neuron(Factory::ASSOC, 0), Factory::neuron(Factory::REACT, 0)); } else { $relationClass = new \ReflectionClass($relation); } //Init ReflectionMethod $initWeightMethod = $relationClass->getMethod($this->_initWeightMethod); $initWeightMethod->setAccessible(true); return $initWeightMethod->invoke($relation); }
/** * @param array $signals * @param int $direction * @return array */ public function prepareNeuronToCalculation($signals = array(), $direction) { $assoc = Factory::neuron(Factory::ASSOC, 0); $react = Factory::neuron(Factory::REACT, 0); //Adding Signals foreach ($signals as $signal) { $assoc->addSignal($signal); $react->addSignal($signal); } $this->_addLayoutToNeuron($assoc); $this->_addLayoutToNeuron($react); //Calculation Net::setDirection($direction); return array(Factory::ASSOC => $assoc, Factory::REACT => $react); }
public function testCreation() { try { $types = $this->parseYaml($this->_getCurrentFolder(__DIR__, "neuron", "types.yml")); foreach ($types as $type => $data) { if (isset($data["class"]) && isset($data["index"])) { /** @var \Sereban\NeuronNet\Neuron $neuron */ $neuron = Factory::neuron($type, $data["index"]); //Assertions $this->assertInstanceOf($data["class"], $neuron); $this->assertEquals($data["index"], $neuron->getIndex()); } } } catch (\Exception $e) { $this->fail($e->getMessage()); } }
/** * @param \Sereban\NeuronNet\Layout\Collection $layoutCollection * @param array $initialValues * @param array $teacherValues * @throws \Exception */ public function initNeuronsInLayoutCollection(NeuronNet\Layout\Collection &$layoutCollection, $initialValues, $teacherValues) { $layoutIndex = 0; /** @var array $neuronsSchema -> $type: $count*/ $neuronsSchema = array(Factory::STIM => count($initialValues), Factory::ASSOC => count($initialValues), Factory::REACT => count($teacherValues)); foreach ($neuronsSchema as $type => $count) { $layout = $layoutCollection->seek($layoutIndex++); for ($j = 0; $j < $count; $j++) { /** @var Neuron $neuron */ $neuron = Factory::neuron($type, $j); $layout->addNeuron($neuron); $neuron->setLayout($layout); } //Set Data to Neurons if ($type == Factory::STIM) { $layout->setValues($initialValues); } elseif ($type == Factory::REACT) { $layout->setValues($teacherValues); } } }