Fast Experimentation with Neural Networks


FENNIX is composed of two main components: the graphic user interface and the core. The GUI contains a tree-shaped script which can be translated into a text script, and a workspace containing the declared variables. A more detailed explanation of this part of the application can be found in the GUI section. On the other hand, the FENNIX core holds the main functionalities of the application. The following subsections give some details of each one of its parts.

Plug-in loader

The plug-in loader allows the user to load additional modules into FENNIX. These pluggable modules are pre-compiled .jar files with classes implementing a generic interface called FNNXObject. Every object in the FENNIX workspace must implement this interface (real numbers, booleans and chains of characters are not considered as objects). Moreover, there are other interfaces extending the FNNXObject interface:

FNNXObject is the more general one, the others define more specific functionalities in the objects. For instance, a new model of neural network (a special multilayer Perceptron) should implement the FNNXObject interface, a new function evaluating the performance of a model should implement the FNNXFunction interface, a new algorithm for finding the parameters of a neural network should implement the FNNXTrainingAlgorithm interface.


The FENNIX lexer takes as input a string of characters and transforms it in a sequence of codes representing each one of the parts of the FENNIX language explained in the Language section. It is somehow a dictionary and a keyword detector which performs an initial translation of the text script.


The FENNIX parser takes as input the sequence of codes generated by the parser and organizes it in a tree structure. Syntax checking is performed at this level, and generates error messages if necessary.


The interpreter is the part of FENNIX which actually executes each command in the script. It has access to the list of loaded plug-ins and thus it can create any known FNNXObject and call any known FNNXFunction configuring them according to what is specified in the script. It creates global variables which can be seen from the GUI by accessing the workspace, and creates local variables which are useful to configure each FNNXObject.

Last modification 10 April 2012
by Héctor Satizábal.