Releases: glasgowneuro/feedforward_closedloop_learning
C++ API uses now the STL and matched errors between filterbank and non-filterbank
API changes
This release changes the C++ API to the standard template library (STL) and removes any raw C pointer. The network architecture and the realtime values are now conveyed via std::vector which also carries the number of elements so that error checking can be done. Any mismatch between expected number of vector elements and actual vector elements will throw an exception.
Filterbank version has now the same number of vector elements for both the inputs and error signals.
In the previous version the inputs were sent through a filterbank and created then an actual number of inputs of number_of_filters*number_of_inputs and the user had to provide an error signal which was then number_of_filters x number_of_input long. That's confusing and now the number of vector elements for both signal and error is the same. In this way the filterbank util class can be a direct replacement for the non-filterbank one.
API simplifications and better normalisation
- All functions creating traces over time with the bandpass filters have been removed from the class
FeedforwardClosedloopLearning
. - There is now a new class
FeedforwardClosedloopLearningWithFilterbank
which has filter banks at every input. - There is no longer a special input layer. The input layer contains activations and errors as any other layer.
- There is no longer a special "output layer" but simply the final layer is the output layer.
- The line follower demo is now part of this git so that you can see how the robot improves.
- loads of smaller fixes
SAB paper release
Version of FCL as presented in Adaptive Behaviour:
Bernd P., Miller P. (2019) Forward Propagation Closed Loop Learning. Adaptive Behaviour.
We have added a function which allows switching on/off the autocorrelation term: setNoAutocorrelation
.
Release with accompanying linefollower and vizdoom
This is our first complete release with the final name of the algorithm: "Feedforward closedloop learning" which encapsulates what the algorithm is about: it operates in closed loop where the error / goal is defined at the input of the agent and because of that the error is propagated from the input to its output.