Main Page

From Artificial Neural Network for PHP

ANN - Artificial Neural Network for PHP 5.x

This project realizes a neural network topology called multilayer perceptron for PHP 5.x environments. The source code is based on a work by Eddy Young in 2002. Several improvements and changes on this implementation are done by Thomas Wien since 2007. You will find the PHP source in the section Download. Please, consider the Copyright. To get a short idea what is the benefit of neural networks have a look at page Neural Networks.

Overview

Features

  • Momentum
  • Dynamic learning rate
  • Output type detection (linear or binary)
  • Logging (weights and network errors)
  • Client-Server model for distributed applications
  • Graphical network topology as PNG image
  • Displaying network details
  • Weight decay

Versions and Change-Log

Version 2.0.7 by Thomas Wien (2009-01-01) Download

  • Removing protected method ANN_Neuron::setOutput()
  • Removing protected unused method ANN_Layer::getInputs()
  • Removing protected unused property ANN_Layer::$arrInputs
  • More detailed exceptions to ANN_Filesystem::saveToFile()
  • Different distribution of activation calls across the layers
  • Different adjustments in ANN_Neuron::adjustWeights() depending on output type
  • Removing static local variables from ANN_Network::getNextIndexInputsToTrain()
  • Increasing math precision
  • Using class constants for output types (increasing performance)
  • Fixing bug: ANN_Neuron::getOutput() is float and not array

Version 2.0.6 by Thomas Wien (2008-12-18)

  • Printing network details of output differences to their desired values
  • Complete rewritten code standard of variables
  • New class ANN_Values for defining input and output values
  • Code examples to phpdoc
  • Internal math precision defaults to 5

Version 2.0.5 by Thomas Wien (2008-12-16)

  • Adjustable output error tolerance between 0 and 10 per cent
  • Internal rounding of floats for performance issues
  • Loading class for all ANN classes (SPL autoload)
  • Renaming filename of ANN_Maths class
  • Improving code standard
  • Fixing bug: Comparison in ANN_InputValue and ANN_OutputValue

Version 2.0.4 by Thomas Wien (2008-01-27)

  • Weight decay
  • QuickProp algorithm (experimental)
  • RProp algorithm (experimental)
  • Linear saturated activation function (experimental)
  • Individual learning rate algorithm (experimental)
  • Reducing of overfitting (no training if input pattern produces desired output)
  • Increasing performance on activation
  • Increasing performance on testing all patterns to their desired outputs
  • Increasing performance on calculating hidden deltas
  • Increasing performance by defining layer relation by construction
  • More details to printNetwork()
  • Fixing bug: learning rate is not part of saved delta value

Version 2.0.3 by Thomas Wien (2008-01-17)

  • Support for dynamic learning rate
  • Automatic epoch determination
  • Automatic output type detection
  • Shuffling input patterns each epoch instead of randomized pattern access
  • Logging of network errors
  • Logging on each epoch instead of each training step
  • Avoiding distributed internal calls of setMomentum() and setLearningRate()
  • Extending display of network details
  • Fixing bug: runtime error on call of setMomentum()

Version 2.0.2 by Thomas Wien (2008-01-14)

  • Client-Server model for distributed applications
  • Calculating total network error for csv logging

Version 2.0.1 by Thomas Wien (2008-01-06)

  • Separation of classes to several files
  • Version control by Subversion
  • Performance issues
  • Graphical output of neural network topology
  • Logging of weights to csv file

Version 2.0.0 by Thomas Wien (2007-12-17)

  • PHP 5.x support
  • PHPDoc documentation
  • Momentum support
  • Avoiding network overfitting
  • Linear / binary output
  • ANN_InputValue + ANN_OutputValue classes
  • Exceptions
  • Threshold function
  • Hyperbolic tangent transfer function
  • Several performance issues
  • Avoiding array_keys() & srand() due to performance
  • Changes in saving and loading network
  • Printing network details to browser
  • Fixing bug: initializing inputs to all hidden layers
  • Fixing bug: training for first hidden layer was skipped

Version 1.0 by Eddy Young (2002)

  • Initial version

Version 2.0.8 by Thomas Wien (Development)

  • Checking parameter counts on ANN_Values::input() and ANN_Values::output()
  • Removing protected method ANN_Neuron::getInputs()
  • Fixing bug: Error tolerance calculation in ANN_Network::isTrainingComplete()

Todo

  • Implementation of synapses (?)
  • More Examples
  • Performance check depending on host system
  • Wiki: More details to installation and use
  • PHPDoc: More details to documentation
  • Supporting PHP 5.3 namespaces
  • Improving license agreement of source code
  • Class parsing before including (compiler switches)