public function __construct($inputNeurons, $outputNeurons, $hiddenLayers, $hiddenNeurons, $file = '') { $this->file = $file; if (!empty($this->file) && is_readable($this->file)) { $this->ann = fann_create_from_file($this->file); } if (!$this->ann) { /** * layers * layer 1 (input layer) * layer 2 (hidden layer 1) * . * . * layer 5 (output layer) */ $layers = $this->createLayersArray($inputNeurons, $outputNeurons, $hiddenLayers, $hiddenNeurons); $this->ann = fann_create_standard_array(count($layers), $layers); } fann_set_activation_function_hidden($this->ann, FANN_SIGMOID_SYMMETRIC); fann_set_activation_function_output($this->ann, FANN_SIGMOID); fann_set_training_algorithm($this->ann, FANN_TRAIN_BATCH); }
/** * Sets activation function for output layer * @param int activation function (SEE TOP OF THIS FILE) * @return bool true on success, false on error */ public function set_activation_function_output($activation_function) { $this->checkIfAnnIsAssigned(); return fann_set_activation_function_output($this->annId, $activation_function); }
<?php $num_input = 2; $num_output = 1; $num_layers = 3; $num_neurons_hidden = 3; $desired_error = 0.001; $max_epochs = 500000; $epochs_between_reports = 1000; $ann = fann_create_standard($num_layers, $num_input, $num_neurons_hidden, $num_output); if ($ann) { fann_set_activation_function_hidden($ann, FANN_SIGMOID_SYMMETRIC); fann_set_activation_function_output($ann, FANN_SIGMOID_SYMMETRIC); $filename = dirname(__FILE__) . "/xor.data"; if (fann_train_on_file($ann, $filename, $max_epochs, $epochs_between_reports, $desired_error)) { fann_save($ann, dirname(__FILE__) . "/xor_float.net"); } fann_destroy($ann); }