The software model of OpenNN
Roberto Lopez.
[email protected]
Artelnics - Making intelligent use of data

In this tutorial we present the software model of OpenNN. The whole process is carried out in the Unified Modeling Language (UML).

The Unified Modeling Language (UML) is a general purpose visual modeling language that is used to specify, visualize, construct, and document the artifacts of a software system.

In order to construct a model for OpenNN, we follow a top-down development. This approach to the problem begins at the highest conceptual level and works down to the details. In this way, to create and evolve a conceptual class diagram, we iteratively model:
  1. Classes.
  2. Associations.
  3. Compositions.
  4. Derived classes.
  5. Members and methods.

1. Classes

In colloquial terms a concept is an idea or a thing. In object-oriented modelling concepts are represented by means of classes. Therefore, a prime task is to identify the main concepts (or classes) of the problem domain. In UML class diagrams, classes are depicted as boxes.
Through all this work, we have seen that general problems can be solved with three elements: a neural network, a performance functional and a training strategy. The characterization in classes of these three concepts for OpenNN is as follows:
NeuralNetwork
The class representing the concept of neural network is called NeuralNetwork.
Performance functional
The class which represents the concept of performance functional is called PerformanceFunctional.
Training strategy
The class representing the concept of training strategy is called TrainingStrategy.
The next figure depicts a starting UML class diagram for the conceptual model of OpenNN.
Conceptual diagram for OpenNN

2. Associations

Once identified the main concepts in the model it is necessary to aggregate the associations among them. An association is a relationship between two concepts which points some significant or interesting information. In UML class diagrams, an association is shown as a line connecting two classes. It is also possible to assign a label to an association. The label is typically one or two words describing the association.
The appropriate associations among the main concepts of OpenNN are next identified to be included to the UML class diagram of the system:
Neural network- Performance functional
A neural network has assigned a performance functional.
Performance functional - Training strategy
A performance functional is improved by a training strategy.
The following figure shows the above UML class diagram with these associations aggregated.

3. Compositions

Classes are usually composed of another classes. The higher level classes manage the lower level ones.

Regarding OpenNN, the three main concepts described above are quite high level structures. This means that the neural network, performance functional and training algorithm classes are composed by different elements. In the next chapters the composition of the high level objects is explained in some detail.

4. Derived classes

In object-oriented programming, some classes are designed only as a parent from which sub-classes may be derived, but which is not itself suitable for instantiation. This is said to be an abstract class, as opposed to a concrete class, which is suitable to be instantiated. The derived class contains all the features of the base class, but may have new features added or redefine existing features. Associations between a base class an a derived class are of the kind is a.

Some OpenNN classes are abstract, and concrete classes are derived from them. In the next chapters we will describe the inheritance of the main components of OpenNN: the neural network, the performance functional and the training strategy.

5. Members and methods

A member (or attribute) is a named value or relationship that exists for all or some instances of a class. A method (or operation) is a procedure associated with a class. In UML class diagrams, classes are depicted as boxes with three sections: the top one indicates the name of the class, the one in the middle lists the attributes of the class, and the bottom one lists the operations.

The main members and methods of the different OpenNN classes are described throughout all this manual.

Bibliography

OpenNN Copyright © 2014 Roberto Lopez (Artelnics)