torch.Tensor.Tensor.nan_to_num
Tensor.nan_to_num(options?: NanToNumOptions): Tensor<S, D, Dev>Tensor.nan_to_num(nanOrOptions?: number | NanToNumOptions, posinfOrOptions?: number | NanToNumOptions, neginfOrOptions?: number | NanToNumOptions, options?: NanToNumOptions): Tensor<S, D, Dev>Replaces NaN, positive infinity, and negative infinity with specified values.
Sanitizes a tensor by replacing problematic floating-point values with user-specified replacements. Essential for:
- Handling tensors with NaN/inf from computations (log(0), 0/0, etc.)
- Data preprocessing to ensure valid inputs
- Loss function stability (avoiding NaN propagation)
- Numerical stability in iterative algorithms
- Creating valid probability distributions
- Default positive infinity replacement (3.4e38) is largest float32 value
- Default negative infinity replacement (-3.4e38) is smallest float32 value
- Can use custom finite values for more controlled replacement
Parameters
optionsNanToNumOptionsoptional
Returns
Tensor<S, D, Dev>– Tensor with NaN/inf replacedExamples
// Handle invalid values from computation
const x = torch.tensor([1.0, 0.0, -1.0]);
const y = x.log(); // [0.0, -inf, nan]
y.nan_to_num(); // [0.0, -3.4e38, 0.0]
// Custom replacement values
const problematic = torch.tensor([1.0, NaN, Infinity, -Infinity]);
problematic.nan_to_num(0, 1e6, -1e6);
// Result: [1.0, 0.0, 1e6, -1e6]
// Ensure valid probability distribution
const probs = torch.tensor([0.3, NaN, 0.4, Infinity]);
probs.nan_to_num(0); // [0.3, 0.0, 0.4, 3.4e38]See Also
- PyTorch torch.nan_to_num()
- isnan - Test for NaN values
- isinf - Test for infinity values
- clamp - Clamp values to a range