Validate bin edges for Piecewise Exponential CIF Loss to ensure at least two finite edges and correct starting point
This commit is contained in:
18
evaluate.py
18
evaluate.py
@@ -10,6 +10,7 @@ Implements the comprehensive evaluation framework defined in evaluate_design.md:
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import math
|
||||
import os
|
||||
import time
|
||||
from pathlib import Path
|
||||
@@ -1571,9 +1572,22 @@ def load_model_and_config(run_dir: str, device: str = 'cuda') -> Tuple:
|
||||
lambda_reg=config.get('lambda_reg', 0.0),
|
||||
)
|
||||
elif config['loss_type'] == 'pwe_cif':
|
||||
# Piecewise-exponential (PWE) requires a FINITE last edge.
|
||||
# If bin_edges ends with +inf (default), drop it and train up to the last finite edge.
|
||||
raw_edges = config.get(
|
||||
'bin_edges', [0.0, 0.24, 0.72, 1.61, 3.84, 10.0, 31.0, float('inf')])
|
||||
pwe_edges = [float(x) for x in raw_edges if math.isfinite(float(x))]
|
||||
if len(pwe_edges) < 2:
|
||||
raise ValueError(
|
||||
"pwe_cif requires at least 2 finite bin edges (including 0). "
|
||||
f"Got bin_edges={list(raw_edges)}"
|
||||
)
|
||||
if pwe_edges[0] != 0.0:
|
||||
raise ValueError(
|
||||
f"pwe_cif requires bin_edges[0]==0.0; got {pwe_edges[0]}"
|
||||
)
|
||||
loss_fn = PiecewiseExponentialCIFNLLLoss(
|
||||
bin_edges=config.get(
|
||||
'bin_edges', [0.0, 0.24, 0.72, 1.61, 3.84, 10.0, 31.0]),
|
||||
bin_edges=pwe_edges,
|
||||
lambda_reg=config.get('lambda_reg', 0.0),
|
||||
)
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user