Genann
Introduction
Genann is an chicken egg that provides bindings to the genann ANSI C neural network library. The C library is written only in standard C, the egg is written only in 'standard' Chicken 5 (what comes included with C5, no eggs).
Genann API
- genann-init inputs hidden-layers hidden-neurons outputsprocedure
Creates and returns a genann record. Each argument is an integer specifying how many of that the genann should have. hidden-neurons is the number of hidden neurons per hidden layer.
- genann-copy genannprocedure
Return a new copy of genann.
- genann-free! genannprocedure
Free the memory used by genann.
- genann-train genann inputs desired-outputs learning-rateprocedure
Does a single backpropagation update on genann, where inputs and desired-outputs are f64vectors and learning-rate is a flonum.
- genann-run genann inputsprocedure
Runs the feedforward algorithm to calculate the ann's output from f64vector inputs. Returns outputs as an f64vector.
- genann-randomize genannprocedure
Sets the weights in genann randomly. This is called by genann-init.
- genann-read #!optional portprocedure
Read a genann record from file port port.
- genann-write #!optional portprocedure
Write a genann to file port port.
Added procedures
- genann-init* inputs hidden-layers hidden-neurons outputsprocedure
- make-genann ...procedure
Like genann-init, but sets genann-free! as a finalizer to the returned genann so it can be properly garbage collected. make-genann is the same procedure as genann-init*.
- genann-copy* genannprocedure
Like genann-copy, but sets genann-free! as a finalizer to the returned genann so it can be properly garbage collected.
- genann-inputs genannprocedure
- genann-outputs genannprocedure
- genann-total-weights genannprocedure
- genann-weights genannprocedure
Returns number of inputs, hidden layers, hidden neurons per layer, and outputs, respectively, in genann. These are more or less equivalent to the following in C:
// genann is created with genann_init genann->inputs genann->hidden_layers genann->hidden genann->outputs genann->total_weights gennan->weight
- genann-weight-set! genann i xprocedure
- genann-weight-ref genann iprocedure
Set or get the ith weight of genann, with the former being a setter for the latter, so you can use set! with genann-weight-ref. Useful for training with random search, as in example2.scm.