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_shape

View 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.