Parameterization¶
sweepx.opt's parameterizations let you optimize over a latent variable while
the FWI solver still sees the physical model.
class Parameterization:
def forward(self, latent: torch.Tensor) -> torch.Tensor:
"""latent -> physical model the solver consumes."""
def inverse(self, physical: torch.Tensor) -> torch.Tensor:
"""Initial physical model -> latent state to optimize."""
This decouples the optimization variable from the physical bounds, which is useful for:
- enforcing velocity bounds via a
sigmoidmap - working in
log(velocity)space for stability - inverting for a perturbation
dvrather than absolutev - replacing the entire model by the output of a neural network (DIP-FWI)
Available parameterizations¶
| Name | Class | Notes |
|---|---|---|
| Identity | IdentityParameterization |
Pass-through; the default. |
| Sigmoid bounds | SigmoidBounds |
Smooth box constraint via logistic. |
| Log-velocity | LogVelocity |
Latent in log(physical) space. |
| Perturbation from background | PerturbationFromBackground |
Latent is the perturbation dv around a fixed background. |
| DIP-FWI | DIPParameterization (+ SmallUNet2D) |
Generator network as implicit regularizer. |