class brainpy.BPTT(target, loss_fun, optimizer=None, loss_has_aux=False, loss_auto_run=True, seed=None, shuffle_data=None, **kwargs)[source]#

The trainer implementing the back-propagation through time (BPTT) algorithm for training dyamical systems.

For more parameters, users should refer to DSRunner.

  • target (DynamicalSystem) – The target model to train.

  • loss_fun (str, callable) –

    The loss function.

    • If it is a string, it should be the function chosen from brainpy.losses module.

    • Otherwise, a callable function which receives argument of (predicts, targets) should be provided.


    If monitors has been set in the trainer, the predicts contains two parts: the network history prediction outputs, and the monitored values.

    see BrainPy examples for more information.

  • loss_has_aux (bool) –

    To indicate whether the loss function returns auxiliary data expect the loss. Moreover, all auxiliary data should be a dict, whose key is used for logging item name and its data is used for the corresponding value. For example,

    def loss_fun(predicts, targets):
        return loss, {'acc': acc, 'spike_num': spike_num}

  • optimizer (Optimizer) – The optimizer used for training. Should be an instance of Optimizer.

  • numpy_mon_after_run (bool) – Make the monitored results as NumPy arrays.

  • logger (Any) – A file-like object (stream). Used to output the running results. Default is the current sys.stdout.

  • data_first_axis (str) – To indicate whether the first axis is the batch size (data_first_axis='B') or the time length (data_first_axis='T').