# Echo State Networks

ReservoirComputing.ESNType
ESN(train_data;
variation = Default(),
input_layer = DenseLayer(),
reservoir = RandSparseReservoir(),
bias = NullLayer(),
reservoir_driver = RNN(),
states_type = StandardStates())
(esn::ESN)(prediction::AbstractPrediction,
output_layer::AbstractOutputLayer;
initial_conditions=output_layer.last_value,
last_state=esn.states[:, end])

Constructor for the Echo State Network model. It requires the reservoir size as the input and the data for the training. It returns a struct ready to be trained with the states already harvested.

After the training this struct can be used for the prediction following the second function call. This will take as input a prediction type and the output layer from the training. The initial_conditions and last_state parameters can be left as they are, unless there is a specific reason to change them. All the components are detailed in the API documentation. More examples are given in the general documentation.

In addition to all the components that can be explored in the documentation a couple need a separate introduction. The variation arguments can be

ReservoirComputing.HybridType
Hybrid(prior_model, u0, tspan, datasize)

Given the model parameters returns an Hybrid variation of the ESN. This entails a different training and prediction. Construction based on [1].

[1] Jaideep Pathak et al. "Hybrid Forecasting of Chaotic Processes: Using Machine Learning in Conjunction with a Knowledge-Based Model" (2018)

These arguments detail more deep variation of the underlying model and they need a separate call. For the moment the most complex is the Hybrid call, but this can and will change in the future. All ESN models can be trained using the following call:

ReservoirComputing.trainFunction
train(esn::AbstractEchoStateNetwork, target_data, training_method=StandardRidge(0.0))

Training of the built ESN over the target_data. The default training method is RidgeRegression. The output is an OutputLayer object to be fed at the esn call for the prediction.