<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.11/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.11/ http://www.mediawiki.org/xml/export-0.11.xsd" version="0.11" xml:lang="en">
  <siteinfo>
    <sitename>Artificial Neural Network for PHP</sitename>
    <dbname>project</dbname>
    <base>https://ann.thwien.de/w/Main_Page</base>
    <generator>MediaWiki 1.39.17</generator>
    <case>first-letter</case>
    <namespaces>
      <namespace key="-2" case="first-letter">Media</namespace>
      <namespace key="-1" case="first-letter">Special</namespace>
      <namespace key="0" case="first-letter" />
      <namespace key="1" case="first-letter">Talk</namespace>
      <namespace key="2" case="first-letter">User</namespace>
      <namespace key="3" case="first-letter">User talk</namespace>
      <namespace key="4" case="first-letter">Artificial Neural Network for PHP</namespace>
      <namespace key="5" case="first-letter">Artificial Neural Network for PHP talk</namespace>
      <namespace key="6" case="first-letter">File</namespace>
      <namespace key="7" case="first-letter">File talk</namespace>
      <namespace key="8" case="first-letter">MediaWiki</namespace>
      <namespace key="9" case="first-letter">MediaWiki talk</namespace>
      <namespace key="10" case="first-letter">Template</namespace>
      <namespace key="11" case="first-letter">Template talk</namespace>
      <namespace key="12" case="first-letter">Help</namespace>
      <namespace key="13" case="first-letter">Help talk</namespace>
      <namespace key="14" case="first-letter">Category</namespace>
      <namespace key="15" case="first-letter">Category talk</namespace>
    </namespaces>
  </siteinfo>
  <page>
    <title>Main Page</title>
    <ns>0</ns>
    <id>1</id>
    <revision>
      <id>438</id>
      <parentid>434</parentid>
      <timestamp>2025-10-14T14:11:19Z</timestamp>
      <contributor>
        <username>Thwien</username>
        <id>2</id>
      </contributor>
      <origin>438</origin>
      <model>wikitext</model>
      <format>text/x-wiki</format>
      <text bytes="7659" sha1="b38jf1rg9i7ghjxefvz3lobp2kt14yo" xml:space="preserve">__NOTOC__
&lt;big&gt;'''ANN - Artificial Neural Network for PHP'''&lt;/big&gt;

This project realizes a '''neural network topology called ''[[multilayer perceptron]]'' for PHP''' 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'' ([https://thwien.de thwien.de] - Germany) since 2007. You get 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]].

== Project backgroud ==

Since 1992 I have been fascinated by the workings of neural networks, especially multilayer perceptrons. In the early days I planned to implement and use such networks in PHP projects. After taking over Eddy’s project in 2007 and releasing version 2.3.0 in 2012, a lot has changed in how we work with neural networks.

Today large‑language models are ubiquitous. Consequently, a PHP class that implements a simple multilayer perceptron may no longer be essential for practical applications, though these models still underpin many modern systems. Nonetheless, the PHP class remains a valuable educational tool for grasping the core concepts of contemporary neural networks. It can serve as part of training or learning exercises. Enjoy!

== Overview ==

* [[Neural Networks]]
* [[Multilayer perceptron|Multilayer Perceptron]]
* [[Download]]
* [[Installation]]
* [[Examples]]
* [[FAQ]]
* [[Copyright]]

== Versions and Change-Log ==

 '''Version 3.0.0 by Thomas Wien''' (2025-10-04) [[Download]]
 
 * Full rework of all PHP scripts
 * Remaining functioniality reduced to fundamentaly function of neural network only
 * Phar support removed
 * PHP 8.2 is required

'''Version 2.3.0 by Thomas Wien''' (2012-12-13)
 
* Using traits for performance reasons
* Checking php version for compatibility with ANN library
* PHP 5.4.x or above

'''Version 2.2.3 by Thomas Wien''' (2012-12-12)

* Bugfix: Division by zero if training time below one second
* Adding php version and sapi interface to network information
* Test running on PHP 5.4

'''Version 2.2.2 by Thomas Wien''' (2011-07-04)

* Redesign of network details
* Considering cpu limits for calculation of network execution time

'''Version 2.2.1 by Thomas Wien''' (2011-06-15)
 
* Bug fix: Wrong output type detection in binary networks
* Using Interface called \ANN\InterfaceLoadable to make easier decision of loadable objects.

'''Version 2.2.0 by Thomas Wien''' (2011-06-01)
 
* Introduction of namespaces as of PHP 5.3
* Dynamic learning rate
* \ANN\Network::setLearningRate() is protected now
* Bug fix: Wrong output type detection in some circumstances

'''Version 2.1.7 by Thomas Wien''' (2011-06-15)

* Bug fix: Wrong output type detection in binary networks

'''Version 2.1.6 by Thomas Wien''' (2011-06-01)

* Bug fix: Wrong output type detection in some circumstances 

'''Version 2.1.5 by Thomas Wien''' (2011-05-24)

* Dividing method ANN_Math::random() in ANN_Math::randomDelta() and ANN_Math::randomWeight()
* Better implementation of printing network details including __invoke() und __toString() converting

'''Version 2.1.4 by Thomas Wien''' (2011-05-23)
 
* Better calculation of remaining time of running the network
* Fixing bug: generating random delta not correct
* Adding momentum value
* Simplified ANN_Neuron::adjustWeights()
* Remove possible wrong calculation in ANN_Neuron::adjustWeights() on linear networks
* Simplify ANN_Layer::calculateHiddenDeltas()

'''Version 2.1.3 by Thomas Wien''' (2010-01-06)
 
* Date input support class 

'''Version 2.1.2 by Thomas Wien''' (2009-12-26)
 
* Classification support
* Phar support (as of PHP 5.3.0)

'''Version 2.1.1 by Thomas Wien''' (2009-12-23)

* String association support

'''Version 2.1.0 by Thomas Wien''' (2009-12-22)

* 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()
* Switching to Git version control
* Moving all experimental code into branch
* Removing all experimental code from master branch (due to performance and future development)

'''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() &amp; 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</text>
      <sha1>b38jf1rg9i7ghjxefvz3lobp2kt14yo</sha1>
    </revision>
  </page>
</mediawiki>
