keras-team/keras · error · ValueError
Received: value_range={value_range}
Error message
Received: value_range={value_range} What it means
Raised by Solarization's _set_value_range when `value_range` is not a tuple or list. The layer needs the min/max of the expected pixel value range (e.g. (0, 255) or (0.0, 1.0)) to scale the threshold; a scalar or string is rejected.
Source
Thrown at keras/src/layers/preprocessing/image_preprocessing/solarization.py:88
threshold_factor=0.0,
value_range=(0, 255),
seed=None,
**kwargs,
):
super().__init__(**kwargs)
self.seed = seed
self.generator = SeedGenerator(seed)
self.addition_factor = self._set_factor(
addition_factor, "addition_factor"
)
self.threshold_factor = self._set_factor(
threshold_factor, "threshold_factor"
)
self._set_value_range(value_range)
def _set_value_range(self, value_range):
if not isinstance(value_range, (tuple, list)):
raise ValueError(
self._VALUE_RANGE_VALIDATION_ERROR
+ f"Received: value_range={value_range}"
)
if len(value_range) != 2:
raise ValueError(
self._VALUE_RANGE_VALIDATION_ERROR
+ f"Received: value_range={value_range}"
)
self.value_range = sorted(value_range)
def _set_factor(self, factor, factor_name):
if isinstance(factor, (tuple, list)):
if len(factor) != 2:
raise ValueError(
self._FACTOR_VALIDATION_ERROR
+ f"Received: {factor_name}={factor}"
)
self._check_factor_range(factor[0])View on GitHub (pinned to 7a34a03db6)
Solutions
- Pass a 2-element tuple/list, e.g. value_range=(0, 255) for uint8 inputs or (0.0, 1.0) for normalized floats
Example fix
// before layer = Solarization(value_range=255) // after layer = Solarization(value_range=(0, 255))
Defensive patterns
Strategy: validation
Validate before calling
assert isinstance(value_range, (tuple, list)) and len(value_range) == 2, 'value_range must be a (min, max) pair'
Type guard
def is_value_range(v):
return isinstance(v, (tuple, list)) and len(v) == 2 and all(isinstance(x, (int, float)) for x in v) Try / catch
try:
layer = Solarization(value_range=vr)
except ValueError:
raise ValueError('value_range must be like (0, 255) or (0.0, 1.0)') Prevention
- Always pass the full (min, max) pair matching your pixel scale
- Derive it from your normalization step: (0, 255) for uint8, (0, 1) after Rescaling(1/255)
When it happens
Trigger: Calling Solarization(value_range=255) or value_range="0-255" — any non-sequence value.
Common situations: Passing a single max value instead of a (min, max) pair when adapting code from layers that take only a maximum; configs serializing the range as a string.
Related errors
- The `factor` argument should be a number (or a list of two n
- Received: {factor_name}={factor}
- Received: {factor_name}={factor}
- Received: {factor_name}={factor}
- The `factor` argument should be a number (or a list of two n
AI-assisted analysis of keras-team/keras@7a34a03db6 (2026-08-25).
Data as JSON: /api/errors/5f6e0dd208b29ad4.
Report an issue: GitHub.