keras-team/keras · error · ValueError
`zoom_range` should be a float or a tuple or list of two flo
Error message
`zoom_range` should be a float or a tuple or list of two floats. Received: {zoom_range} What it means
ImageDataGenerator zoom_range must be a single float/int (symmetric [1-z, 1+z]) or a sequence of exactly two numbers. Anything else (1 number in a list, 3 elements, strings) is rejected.
Source
Thrown at keras/src/legacy/preprocessing/image.py:1038
if validation_split and not 0 < validation_split < 1:
raise ValueError(
"`validation_split` must be strictly between 0 and 1. "
f" Received: {validation_split}"
)
self._validation_split = validation_split
self.mean = None
self.std = None
self.zca_whitening_matrix = None
if isinstance(zoom_range, (float, int)):
self.zoom_range = [1 - zoom_range, 1 + zoom_range]
elif len(zoom_range) == 2 and all(
isinstance(val, (float, int)) for val in zoom_range
):
self.zoom_range = [zoom_range[0], zoom_range[1]]
else:
raise ValueError(
"`zoom_range` should be a float or "
"a tuple or list of two floats. "
f"Received: {zoom_range}"
)
if zca_whitening:
if not featurewise_center:
self.featurewise_center = True
warnings.warn(
"This ImageDataGenerator specifies "
"`zca_whitening`, which overrides "
"setting of `featurewise_center`."
)
if featurewise_std_normalization:
self.featurewise_std_normalization = False
warnings.warn(
"This ImageDataGenerator specifies "
"`zca_whitening` "
"which overrides setting of"View on GitHub (pinned to 7a34a03db6)
Solutions
- Use a float: zoom_range=0.2, or a 2-element list [0.8, 1.2]
- Parse config values into float/list before passing
- Order matters: [lower, upper]
Example fix
// before zoom_range=[0.2] // after zoom_range=[0.8, 1.2]
Defensive patterns
Strategy: validation
Validate before calling
import numbers ok = isinstance(zoom_range,(int,float)) or (isinstance(zoom_range,(list,tuple)) and len(zoom_range)==2 and all(isinstance(v,(int,float)) for v in zoom_range)) assert ok, zoom_range
Type guard
def zoom_ok(z): return isinstance(z,(int,float)) or (isinstance(z,(list,tuple)) and len(z)==2)
Try / catch
try: ImageDataGenerator(zoom_range=z) except ValueError as e: if 'zoom_range' in str(e): z = [0.8, 1.2]
Prevention
- Validate augmentation config dicts once at load
When it happens
Trigger: ImageDataGenerator(zoom_range=[0.2]) or zoom_range=[0.8,1.2,1.5] or zoom_range='0.2'.
Common situations: Config file parses zoom_range as a string; partial copy of a 2-element example.
Understand the failure class
Background: "Must be a positive integer", "Invalid value", "Unsupported": the invalid-argument-value error family, when a library rejects the value you pass — this error's family across 35 libraries.
Related errors
- `factor` argument cannot have an upper bound lesser than the
- `factor` argument must have values larger than -1. Received:
- `factor` argument cannot have an upper bound less than the l
- `brightness_range should be tuple or list of two floats. Rec
- Unknown activation function '{activation}' cannot be seriali
AI-assisted analysis of keras-team/keras@7a34a03db6 (2026-08-25).
Data as JSON: /api/errors/f7558e5836252485.
Report an issue: GitHub.