torch.nan_to_num
function nan_to_num(input: unknown, nan: unknown, posinf: unknown, neginf: unknown, options: unknown): TensorReplaces NaN, positive infinity, and negative infinity with specified values.
Essential for numerical stability in machine learning:
- Loss function safety: Replacing infinities from log(0), division by zero, etc.
- Gradient flow: Stopping NaN gradients from breaking backpropagation
- Model validation: Ensuring predictions are bounded to valid ranges
- Data cleaning: Handling invalid data from measurements or previous computations
Replaces:
- NaN → specified nan value (default: 0)
- Positive infinity → specified posinf value (default: max float32 ~3.4e38)
- Negative infinity → specified neginf value (default: min float32 ~-3.4e38)
Parameters
inputunknown- The input tensor (any shape, any dtype)
nanunknown- Value to replace NaN with (default: 0)
posinfunknown- Value to replace +Infinity with (default: finfo.max for dtype)
neginfunknown- Value to replace -Infinity with (default: finfo.min for dtype)
optionsunknown- Optional settings including
outparameter
Returns
Tensor– Tensor with same shape/dtype as input, with special values replacedExamples
// Basic usage: replace special values
const x = torch.tensor([NaN, Infinity, -Infinity, 1.5, 0]);
torch.nan_to_num(x, 0, 1000, -1000); // [0, 1000, -1000, 1.5, 0]
// Preventing NaN in log computations
const probs = torch.tensor([0.1, 0.5, 0.0]);
const log_probs = torch.log(probs);
const safe_log_probs = torch.nan_to_num(log_probs, { neginf: -100 });See Also
- PyTorch torch.nan_to_num()
- isnan - Check for NaN values
- isinf - Check for infinity values
- clamp - Clip values to a range