Stability-AI/generative-models · error · ValueError
unknown merge strategy {merge_strategy}
Error message
unknown merge strategy {merge_strategy} What it means
The factor/merge mechanism in spacetime_attention.py supports a fixed set of merge_strategy values (e.g. 'learned', 'fixed', 'fixed_with_images'); an unrecognized strategy raises ValueError(f"unknown merge strategy {merge_strategy}") during attention module construction.
Source
Thrown at sgm/modules/spacetime_attention.py:248
time_embed_dim = self.in_channels * 4
self.time_mix_time_embed = nn.Sequential(
linear(self.in_channels, time_embed_dim),
nn.SiLU(),
linear(time_embed_dim, self.in_channels),
)
self.time_mix_legacy = time_mix_legacy
if self.time_mix_legacy:
if merge_strategy == "fixed":
self.register_buffer("mix_factor", torch.Tensor([merge_factor]))
elif merge_strategy == "learned" or merge_strategy == "learned_with_images":
self.register_parameter(
"mix_factor", torch.nn.Parameter(torch.Tensor([merge_factor]))
)
elif merge_strategy == "fixed_with_images":
self.mix_factor = None
else:
raise ValueError(f"unknown merge strategy {merge_strategy}")
self.get_alpha_fn = partial(
get_alpha,
merge_strategy,
self.mix_factor,
apply_sigmoid=apply_sigmoid_to_merge,
is_attn=True,
)
else:
self.time_mixer = AlphaBlender(
alpha=merge_factor, merge_strategy=merge_strategy
)
def forward(
self,
x: torch.Tensor,
context: Optional[torch.Tensor] = None,
# cam: Optional[torch.Tensor] = None,View on GitHub (pinned to e8cd657656)
Solutions
- Set merge_strategy to one of the supported strings ('learned', 'fixed', or 'fixed_with_images')
- Check the class __init__ defaults around spacetime_attention.py:248 to see the accepted values
- Fix the typo/whitespace in the config key value
Example fix
// before merge_strategy: learnned // after merge_strategy: learned
Defensive patterns
Strategy: validation
Validate before calling
VALID_STRATEGIES = {'learned', 'fixed', 'fixed_with_images'}
strategy = attn_params.get('merge_strategy', 'learned')
if strategy not in VALID_STRATEGIES:
raise ValueError(f"merge_strategy must be one of {sorted(VALID_STRATEGIES)}, got {strategy!r}") Try / catch
try:
model = load_model_from_config(cfg, ckpt)
except ValueError as e:
if 'unknown merge strategy' in str(e):
cfg['params']['transformer_params']['merge_strategy'] = 'learned'
model = load_model_from_config(cfg, ckpt)
else:
raise Prevention
- Only use merge_strategy values copied from working sgm configs
- Check the current source (spacetime_attention.py) for the supported set before inventing values
- Beware None if the param is omitted — set an explicit default
When it happens
Trigger: Passing merge_strategy set to any value outside the supported set ('learned', 'fixed', 'fixed_with_images'), e.g. 'learned_with_images', 'mean', null/None, or a missing param that defaults badly.
Common situations: Typos in the YAML config; reusing video_attention configs from a different repo version with extra strategies added; accidentally omitting merge_strategy so None flows through.
Understand the failure class
Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.
Related errors
- unknown merge strategy {self.merge_strategy}
- Unknown loss type {self.loss_type}
- provide num_res_blocks either as an int (globally constant)
- Order {order} too high for step {i}
- Decay must be between 0 and 1
AI-assisted analysis of Stability-AI/generative-models@e8cd657656 (2026-08-29).
Data as JSON: /api/errors/848f0bd1d0d39989.
Report an issue: GitHub.