Skip to content

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 sigmoid map
  • working in log(velocity) space for stability
  • inverting for a perturbation dv rather than absolute v
  • 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.