keras-team/keras · error · ValueError
`padding='valid'` requires output_size to equal size * grid.
Error message
`padding='valid'` requires output_size to equal size * grid. Got output_size={self.output_size}, grid {dim_name}={g}, size={self.size}. What it means
Error "`padding='valid'` requires output_size to equal size * grid. Got output_size={self.output_size}, grid {dim_name}={g}, size={self.size}." thrown in keras-team/keras.
Source
Thrown at keras/src/ops/image.py:1024
f"prod(size) ({patch_volume})."
)
if self.data_format == "channels_last":
grid_offset = 1 if original_ndim == expected_ndim_batched else 0
grid = patches_shape[grid_offset : grid_offset + len(self.size)]
else:
# channels_first: the grid dims are the trailing dims,
# (B, flat, *grid) batched or (flat, *grid) unbatched.
grid = patches_shape[-len(self.size) :]
dim_names = ("depth", "height", "width")[-len(self.size) :]
for g, p, o, dim_name in zip(
grid, self.size, self.output_size, dim_names
):
if not isinstance(g, int):
continue
if self.padding == "valid":
if g * p != o:
raise ValueError(
f"`padding='valid'` requires output_size to equal "
f"size * grid. Got output_size={self.output_size}, "
f"grid {dim_name}={g}, size={self.size}."
)
elif not (g * p - p < o <= g * p):
raise ValueError(
f"For `padding='same'`, `output_size` {dim_name} ({o}) "
f"must be in the range ((g-1)*p, g*p], i.e. "
f"({g * p - p}, {g * p}]. Got: grid={g}, patch={p}."
)
if self.data_format == "channels_last":
out_shape = list(spatial) + [channels_out]
else:
out_shape = [channels_out] + list(spatial)
if original_ndim == expected_ndim_batched:
out_shape = [batch] + out_shapeView on GitHub (pinned to 7a34a03db6)
When it happens
Trigger: Thrown at keras/src/ops/image.py:1024 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of keras-team/keras@7a34a03db6 (2026-08-25).
Data as JSON: /api/errors/ed170831268b6bd7.
Report an issue: GitHub.