REDES NEURONALES EN PHP CON FANN
FANN significa Fast Artificial Neural Network. Es una extensión de PHP que actúa como wrapper de la librería en C llamada FANN.Permite crear, entrenar y ejecutar redes neuronales artificiales multicapa de forma súper rápida y ligera directamente desde PHP.
¿Para qué sirve?
- Clasificación.
- Predicción.
- Reconocimiento de patrones.
- Cualquier tarea de machine learning sencilla donde se requiera algo rápido y sin dependencias pesadas como TensorFlow o PyTorch.
Características principales
- Algoritmos de entrenamiento: backpropagation, Cascade, Quickprop, RPROP, SARPROP…
- Activaciones: sigmoid, tanh, etc..
- Guardar/cargar redes en archivos (.net).
- Entrenamiento con datos en archivos o en memoria.
- Escalado automático de entradas/salidas.
- Soporta PHP en Linux y Windows (con DLLs precompiladas).
Ejemplo clásico: resolver XOR
Crear un archivo "xor.data" con los datos de entrenamiento:4 2 1
-1 -1
-1
-1 1
1
1 -1
1
1 1
-1
$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");
echo "¡Red entrenada y guardada!\n";
}
fann_destroy($ann);
}
$ann = fann_create_from_file("xor_float.net");
$input = array(-1, 1);
$calc_out = fann_run($ann, $input);
printf("XOR (-1, 1) = %.4f\n", $calc_out[0]); // Debería dar ≈ 1
fann_destroy($ann);