-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Large forward maps make Julia crash #84
Comments
Oh! That's why Julia was unexpectedly quitting?! I think I was running onto similar problem when I tried to calibrate the 3D model.... |
Let's do 4. I don't have Costco near me though. Problem! |
How about 3? Sparse matrices sounds good but also sounds bit like a mini-research endeavour? |
I just realized that |
I'd vote for using existing tools to solve this problem without changing source code, which is option 2, so: i. Restrict comparison times using the We'll want to do iii anyways, especially when the simulations get more expensive. |
Another option is to add a new output map that computes some kind of loss (perhaps the easiest is just the norm of the difference between forward output and observations)? |
Eg we can't use sparse matrices? Damn the maps. |
We can fix that |
We can also add a convenience utility that rebuilds an inverse problem with more times, eg something like new_ip = with_observation_times(old_ip, new_times) |
Just a note: we implemented ensemble transform Kalman inversion in EKP: CliMA/EnsembleKalmanProcesses.jl#329 This variant of EKI not have the problem described here. In particular, the covariance matrix never has to be formed, and the time complexity will scale linearly with observation size. |
That sounds useful @eviatarbach. It looks like the noise covariance is used here: ParameterEstimocean.jl/src/EnsembleKalmanInversions.jl Lines 500 to 505 in a9dbf70
Can you show us how we would use ensemble transform Kalman inversion instead? Unfortunately, looking at the code, it seems that when using any adaptive stepping schemes the use of the noise covariance during the EKI update is a bit tangled up with the time-step estimation. The code could use a little refactoring to create a separation of concerns there. (The interface for "no adaptive timestepping" may be broken right now --- I'm not sure its tested) |
Ah yes, you still need to provide the noise covariance (in fact, its inverse); ETKI will only have better time complexity than EKI in the case that this has a simple structure, ideally diagonal. If this is satisfied, then I would try, using the latest dev version of EKP (haven't created a new release yet), to just create an EKI struct with argument If this runs into problems I would be happy to help troubleshoot. |
Ah ok, so this might work now with user input here:
PS the distinction between the "process" and |
Yes, exactly. I agree, the naming is confusing: in one case, it refers to the struct which indicates what type of inversion to use, e.g. |
Mm yeah! We avoid names with "type" in them for julia code (too easy to confused with julia types) but something like that might work. |
Good point on the naming. Yes, |
When trying to calibrate to LESbrary simulations, the forward map typically has over half a million elements, making it impossible to store a covariance matrix for EKI. How do you guys want to handle this? We could
observations
. This would make it harder to animate the solution downstream.time_range
attribute toConcatenatedOutputMap
that specifies which time steps to track--defaults to all time steps.OceanTurbulenceParameterEstimation.jl
and sip guava juice from Costco while brainstorming alternative research topics.@glwagner @navidcy What do you guys think?
The text was updated successfully, but these errors were encountered: