So, in your method
solvers.variational_kalman( observations, H_matrix, n_params, ...)
The 'fast linear version' I've been using would simply equate to smoothing the A and b matrices (e.g. along time / space dimensions) before solving in your implementation.
This would involve the dataset being stacked in eg time for temporal regularisation, rather than your use here as part of a filter but be a very good use of this method. You could certainty use this to get more robust initial conditions or in other processing of a block over time (e.g. Model fitting). In any case, scaling of A and preconditioning by F (or rather approximation to F) are good ideas anyway.
So, in your method
solvers.variational_kalman( observations, H_matrix, n_params, ...)
The 'fast linear version' I've been using would simply equate to smoothing the A and b matrices (e.g. along time / space dimensions) before solving in your implementation.
This would involve the dataset being stacked in eg time for temporal regularisation, rather than your use here as part of a filter but be a very good use of this method. You could certainty use this to get more robust initial conditions or in other processing of a block over time (e.g. Model fitting). In any case, scaling of A and preconditioning by F (or rather approximation to F) are good ideas anyway.