Skip to content

Version 3.0.2

Version 3.0.2 fixes low-precision reductions and regularization, small-batch regularization, and NumPy sampler inputs. Public signatures and minimum supported Python, PyTorch, and NumPy versions are unchanged.

Numerical fixes

  • ClassWeightedReducer multiplies and averages float16 and bfloat16 losses in float32, then returns the scalar in the input dtype. Stored weights keep their precision until multiplication, avoiding premature underflow, overflow, and rounding (#775).
  • CenterInvariantRegularizer widens float16 and bfloat16 inputs before computing norms and squared deviations. Its reduced scalar remains float32 for those inputs so a later regularization weight can scale a large finite penalty. This corrects loss values and gradients affected by low-precision rounding or overflow; float32 and float64 behavior and the configurable Lp norm are preserved (#776).
  • RegularFaceRegularizer returns differentiable zero for empty and singleton inputs. It continues to validate its inputs and retains the existing nearest-neighbor objective for two or more centers (#777).

Sampler inputs

Samplers preserve categorical and hashable NumPy label values and accept views with negative strides or non-native byte order. Invalid label dimensions and hierarchy columns produce descriptive errors at construction (#778).

Benchmark tooling

Capacity searches report a batch size only after successful confirmation. They return no verified capacity when every probe or a confirmation fails, preserve the confirmation failure status, and correctly refine brackets whose starting batch is not aligned to the search granularity. Invalid search settings are rejected before launching a probe (#779). Previously published benchmark measurements are unchanged.

Contributors

Thanks to Afloat16 for all five fixes. The original contribution commits are preserved in this release.