MolecularDiffusion.modules.models.goflow.outputs¶
The atom-wise 3D output head that turns (q, mu) into a velocity.
Ported from gotennet/models/components/outputs.py:21-49 (SNNDense,
what GatedEquivariantBlock needs) and :52-189 (GatedEquivariantBlock,
Atomwise3DOut). Atomwise3DOutRTSP (upstream’s own “TODO: modify to
accept r/ts/p”, never imported by flow_matching/flow_module.py) is not
ported – dead code, not a fidelity gap.
Classes¶
Two stacked |
|
Rotationally invariant/equivariant tensorial feature mixing. |
|
Fully connected linear layer with activation. Verbatim from |
Module Contents¶
- class MolecularDiffusion.modules.models.goflow.outputs.Atomwise3DOut(n_in, n_hidden: int | None = None, activation=shifted_softplus)¶
Bases:
torch.nn.ModuleTwo stacked
GatedEquivariantBlocks mapping(q, mu[:, :3, :])to a per-atom 3D velocity. Verbatim fromoutputs.py:161-189.- forward(l0: torch.Tensor, l1: torch.Tensor) torch.Tensor¶
- out_net¶
- class MolecularDiffusion.modules.models.goflow.outputs.GatedEquivariantBlock(n_sin, n_vin, n_sout, n_vout, n_hidden, activation=F.silu, sactivation=None)¶
Bases:
torch.nn.ModuleRotationally invariant/equivariant tensorial feature mixing.
Verbatim from
outputs.py:52-85.- forward(scalars: torch.Tensor, vectors: torch.Tensor)¶
- mix_vectors¶
- n_sin¶
- n_sout¶
- n_vin¶
- n_vout¶
- sactivation = None¶
- scalar_net¶
- class MolecularDiffusion.modules.models.goflow.outputs.SNNDense(in_features: int, out_features: int, bias: bool = True, activation: Callable | torch.nn.Module | None = None, weight_init: Callable = xavier_uniform_, bias_init: Callable = zeros_)¶
Bases:
torch.nn.LinearFully connected linear layer with activation. Verbatim from
outputs.py:21-49.- forward(input: torch.Tensor) torch.Tensor¶
- activation¶
- bias_init¶
- weight_init¶