ScotlandPHP 2019

## XOR (异或)训练

Example #1 xor.data file

```4 2 1
-1 -1
-1
-1 1
1
1 -1
1
1 1
-1```

Example #2 一般训练

``` <?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);}?> ```

Example #3 一般测试

``` <?php\$train_file = (dirname(__FILE__) . "/xor_float.net");if (!is_file(\$train_file))    die("The file xor_float.net has not been created! Please run simple_train.php to generate it");\$ann = fann_create_from_file(\$train_file);if (!\$ann)    die("ANN could not be created");\$input = array(-1, 1);\$calc_out = fann_run(\$ann, \$input);printf("xor test (%f,%f) -> %f\n", \$input[0], \$input[1], \$calc_out[0]);fann_destroy(\$ann);?> ```

``` Here is an explanation for the input file for training, as it might be obvious to everyone and you must understand it to write your own:4 2 1 <- header file saying there are 4 sets to read, with 2 inputs and 1 output-1 -1 <- the 2 inputs for the 1st group-1    <- the 1 output for the 1st group-1 1  <- the 2 inputs for the 2nd group1     <- the 1 output for the 2nd group1 -1  <- the 2 inputs for the 3rd group1     <- the 1 output for the 3rd group1 1   <- the 2 inputs for the 4th group-1    <- the 1 output for the 4th group ```
``` A helpful reference for FANN is available here:http://leenissen.dk/fann/html/files2/theory-txt.html ```