aeppl.scan.MeasurableScan.perform#

MeasurableScan.perform(node, inputs, output_storage, params=None)#

Compute the scan operation in Python.

The inputs are packed like this:

n_steps

X sequence inputs x_1, x_2, … x_<self.info.n_seqs>

Y initial states (u_1, u_2, … u_<self.n_outs>) for our outputs. Each must have appropriate length (T_1, T_2, …, T_Y).

W other inputs w_1, w_2, … w_W

There are at least 1 + self.info.n_seqs + self.n_outs inputs, and the ones above this number are passed to the scanned function as non-sequential inputs.

The outputs are more straightforward:

Y sequence outputs y_1, y_2, … y_<self.n_outs>