pycsamt.ai.nets.drcnn#
DRCNNNet — Dense Residual CNN for joint / multi-modal EM inversion.
Adapts the Dense-Residual Convolutional Neural Network architecture of Guo et al. (2021) to the general case of fusing two or more 1-D EM datasets (e.g., AMT + TEM, MT + gravity) into a single subsurface model prediction.
Architecture#
Each modality is encoded by an independent 1-D dense block. Dense blocks use DenseNet-style growth: every sub-layer receives the concatenation of all previous sub-layer outputs plus the original input. A residual shortcut connects the block input to its output so the decoder sees both a bottleneck and the original features.
After encoding, features from all modalities are concatenated and processed by a shared fusion dense block, followed by a linear output head.
where \(k\) indexes the modality and \(l\) indexes the dense-block sub-layer.
References
Guo R. et al. (2021) IEEE TGRS — DRCNN for joint AMT+seismic.
Classes
|
Factory wrapper for the Dense Residual CNN. |
- class pycsamt.ai.nets.drcnn.DRCNNNet(n_features_list, n_out, *, growth_rate=32, n_layers=6, hidden_dim=256, dropout=0.2)[source]#
Bases:
objectFactory wrapper for the Dense Residual CNN.
- Parameters:
n_features_list (sequence of int) – Feature vector length for each input modality. E.g.
(120, 48)for 120 MT features and 48 seismic features.n_out (int) – Output dimension (number of subsurface parameters to predict).
growth_rate (int, default 32) – New channels added by each sub-layer in a dense block.
n_layers (int, default 6) – Number of sub-layers per dense block.
hidden_dim (int, default 256) – Dimension of the encoded representation from each modality and the fusion block output.
dropout (float, default 0.2)
Examples
>>> # MT (120 features) + TEM (48 features) >>> drcnn = DRCNNNet((120, 48), n_out=9) >>> model = drcnn.build()