Пример #1
0
 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);
 }
Пример #2
0
 /**
  * @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);
 }
Пример #3
0
 /**
  * @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);
 }
Пример #4
0
 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());
     }
 }
Пример #5
0
 /**
  * @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);
         }
     }
 }