Base Conditioner¶
Conditioning mechanisms for injecting PDE parameters into flow models.
base_conditioner
¶
Base Conditioner Abstract Class
Defines the interface for conditioning mechanisms in FlowPDE.
BaseConditioner
¶
Bases: ABC, Module
Abstract base class for conditioning mechanisms.
Conditioners process and inject conditioning information (e.g., PDE coefficients, boundary conditions, observations) into the flow model.
Examples: - Concatenation: Simply concatenate condition with input - Cross-attention: Use attention mechanism to condition - FiLM: Feature-wise Linear Modulation - Adaptive Instance Normalization
Source code in flowpde/core/base_conditioner.py
__init__(**kwargs)
¶
Initialize conditioner.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
**kwargs
|
Any
|
Conditioner-specific parameters |
{}
|
forward(x, condition, **kwargs)
abstractmethod
¶
Apply conditioning to input.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Tensor
|
Input tensor (batch_size, dim) or (batch_size, channels, H, W) |
required |
condition
|
Tensor
|
Conditioning information |
required |
**kwargs
|
Any
|
Additional parameters |
{}
|
Returns:
| Name | Type | Description |
|---|---|---|
conditioned_x |
Union[Tensor, Dict[str, Tensor]]
|
Conditioned tensor (same shape as x or transformed) |
Union[Tensor, Dict[str, Tensor]]
|
OR |
|
Union[Tensor, Dict[str, Tensor]]
|
Dictionary with conditioned features and auxiliary outputs |
Source code in flowpde/core/base_conditioner.py
preprocess_condition(condition)
¶
Preprocess conditioning information before use.
Override this to implement custom preprocessing (e.g., normalization, embedding, feature extraction).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
condition
|
Tensor
|
Raw conditioning tensor |
required |
Returns:
| Type | Description |
|---|---|
Tensor
|
Preprocessed conditioning tensor |
Source code in flowpde/core/base_conditioner.py
get_config()
¶
ConcatConditioner
¶
Bases: BaseConditioner
Simple concatenation-based conditioning.
Concatenates condition with input along specified dimension.
Source code in flowpde/core/base_conditioner.py
__init__(dim=1)
¶
Initialize concatenation conditioner.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
dim
|
int
|
Dimension along which to concatenate (default: 1 for feature dimension) |
1
|
forward(x, condition)
¶
Concatenate condition with input.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Tensor
|
Input tensor |
required |
condition
|
Tensor
|
Conditioning tensor |
required |
Returns:
| Type | Description |
|---|---|
Tensor
|
Concatenated tensor |
Source code in flowpde/core/base_conditioner.py
FiLMConditioner
¶
Bases: BaseConditioner
Feature-wise Linear Modulation (FiLM) conditioning.
Generates scale and shift parameters from condition to modulate
features as (1 + scale) * x + shift.
Source code in flowpde/core/base_conditioner.py
134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 | |
__init__(condition_dim, feature_dim, hidden_dim=None)
¶
Initialize FiLM conditioner.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
condition_dim
|
int
|
Dimension of conditioning input |
required |
feature_dim
|
int
|
Dimension of features to modulate |
required |
hidden_dim
|
Optional[int]
|
Hidden dimension for parameter generation (default: condition_dim) |
None
|
Source code in flowpde/core/base_conditioner.py
forward(x, condition, **kwargs)
¶
Apply FiLM conditioning.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
Tensor
|
Input features (batch_size, feature_dim, ...) |
required |
condition
|
Tensor
|
Conditioning information (batch_size, condition_dim) |
required |
Returns:
| Type | Description |
|---|---|
Tensor
|
Modulated features: (1 + scale) * x + shift |
Source code in flowpde/core/base_conditioner.py
NullConditioner
¶
Bases: BaseConditioner
No-op conditioner that returns input unchanged.
Useful for unconditional models or as a placeholder.