[comp.ai.neural-nets] NN-definition Language

thalmann@brain.inf.ethz.ch (Laura Thalmann) (08/17/90)

Hi neural-experts,

This is a presentation of (yet another) neural network implementation,
a NN-definition language:
Condela means CONnection DEfinition LAnguage and it is a high level
programming language, specifically designed for the development and
modeling of neural network applications. It is a procedural and
general purpose language, that allows parallelism via the concept of
selections, i.e. groups of units or connections to which actions can
be applied. Units and connections can be created dynamically at any
point in the program flow. The parallelism expressible in Condela-3 is
independent of the underlying Hardware. Condela-3 is easy to teach, as
it has few language constructs, yet allows the expression of arbitrary
network topologies and learning paradigms due to its powerful
statements and its two levels of abstraction. It is easily portable to
other operating systems, its open design allows simple interfacing
to existing applications.

The following sample program demonstrates the classical XOR learning
problem using error back propagation.

 1  TOPOLOGY
 2      xor =   LAYER input OF FIELD[2]; END;
 3              LAYER hidden OF FIELD[2]; END;
 4              LAYER output OF FIELD[1]; END;
 5  VAR p : NETWORK OF xor;
 6
 7  PROCEDURE main();
 8  VAR output_vec, input_vec : VECTOR;
 9      input_layer, hidden_layer, output_layer : USEL;
10
11  BEGIN
12      CREATE p;
13      input_layer := { p.input[0..1] };
14      hidden_layer := { p.hidden[0..1] };
15      output_layer := { p.output[0] };
16      CONNECT input_layer TO hidden_layer INIT random();
17      CONNECT hidden_layer TO output_layer INIT random();
18      LOOP 1000000 TIMES
19              get_input(input_vec, output_vec);
20              input_layer : out := input_vec;
21              APPLY feed_forward() TO hidden_layer;
22              APPLY feed_forward() TO output_layer;
23              APPLY back_propagate_out(output_vec) TO output_layer;
24              APPLY back_propagate_hid() TO hidden_layer;
25      END;
26  END;

It has a 2 layered implementation that allows the "abstract" definition
of a neural network topology and behavior and a "concrete" implementation
in C. This compiler (implemented with lex and yacc) translates the
Condela-source to C and therefore allows simple interfacing to other existing
neural network simulation systems. 
I appreciate any comments. 
-Nick.
,----------------------------------------------------,
| Nikolaus Almassy            almassy@ifi.unizh.ch  /
| University of Zurich-Irchel Tel:+41-1-257 43 15  /
| Department of Informatik    Fax:+41-1-257 43 43 /
| Winterthurerstr. 190      CH-8057 SWITZERLAND  /
`-----------------------------------------------'

snider@eric.mpr.ca (Duane Snider) (08/18/90)

>This is a presentation of (yet another) neural network implementation,
>a NN-definition language:
>Condela means CONnection DEfinition LAnguage and it is a high level
>programming language, specifically designed for the development and
>modeling of neural network applications. It is a procedural and
						  ^^^^^^^^^^
>general purpose language, that allows parallelism via the concept of
 ^^^^^^^^^^^^^^^^^^^^^^^^

It appears CONDELA isn't doing anything more than a programming language
like C++ could handle.

Are you sure that another language is necessary in this field, yet?
 
----------------------------------------------------------------------
Duane Snider
snider@mpr.ca