pycsamt.ai.inversion.joint#
JointInverter — multi-modal / multi-physics joint inversion.
Uses the DRCNNNet architecture to fuse
two or more EM datasets (or EM + non-EM methods) into a single
subsurface model prediction.
Supported combinations#
MT + TEM — complementary depth sensitivity
MT + CSAMT — frequency overlap to constrain near-surface
MT + gravity or seismic — cross-property constraints
Joint training#
All modalities must be observed at the same sites. Use
generate_dataset() with different
solver values and the same LayeredModel
to generate correlated synthetic datasets for supervised training.
Example
>>> from pycsamt.ai.inversion import JointInverter
>>> inv = JointInverter(n_features_list=(120, 48), n_layers=5)
>>> inv.fit([X_mt, X_tem], y, epochs=50)
JointInverter(modalities=2, fitted)
>>> y_pred = inv.predict([X_mt_test, X_tem_test])
Classes
|
Multi-modal joint inversion estimator based on DRCNN. |
- class pycsamt.ai.inversion.joint.JointInverter(n_features_list, n_layers=5, *, growth_rate=32, n_dense_layers=6, hidden_dim=256, dropout=0.2, device=None, log_thickness=True, **net_kwargs)[source]#
Bases:
BaseEMNetMulti-modal joint inversion estimator based on DRCNN.
- Parameters:
n_features_list (sequence of int) – Feature vector lengths for each modality. E.g.
(120, 48)for two modalities.n_layers (int, default 5) – Number of earth layers to invert for.
growth_rate (int, default 32) – Dense block growth rate.
n_dense_layers (int, default 6) – Sub-layers per dense block.
hidden_dim (int, default 256) – Encoded-feature dimension for each modality and fusion stage.
dropout (float, default 0.2)
device (str or None)
log_thickness (bool, default True) – Apply log₁₀ transform to thickness targets before normalisation.
**net_kwargs – Forwarded to
DRCNNNet.
- fit(X_list, y, *, epochs=100, batch_size=256, lr=0.001, patience=20, val_frac=0.1, grad_clip=1.0, seed=None, verbose=True)[source]#
Train the joint inverter.
- Parameters:
X_list (list of ndarray) – Feature matrices for each modality, each
(n_samples, n_features_i). Lengths must match.y (ndarray (n_samples, 2*n_layers-1)) – Target model parameters: first
n_layerscolumns are log₁₀(ρ) or ρ; lastn_layers-1columns are thicknesses.epochs (int) – Standard training hyper-parameters.
batch_size (int) – Standard training hyper-parameters.
lr (float) – Standard training hyper-parameters.
patience (int) – Standard training hyper-parameters.
val_frac (float) – Standard training hyper-parameters.
grad_clip (float | None) – Standard training hyper-parameters.
seed (int | None) – Standard training hyper-parameters.
verbose (bool) – Standard training hyper-parameters.
- Return type:
self