ai.onnx.GridSample
ai.onnx · standard ONNX operator · ONNX opset ≥ 20
Description
Samples values from input tensor X at positions defined by a flow-field grid, producing output Y with spatial dimensions taken from grid. Grid coordinates are normalized to [-1, 1] over the input spatial extent; positions outside this range are handled according to padding_mode. Supports spatial (rank-4, NCHW) and volumetric (rank-5, NCDHW) inputs with linear, nearest, or cubic interpolation.
See the ONNX GridSample spec for the reference semantics.
Inputs
| Name | Bind key | Logical dtype | Rank | Shape | Description | Presence |
|---|---|---|---|---|---|---|
X |
x |
T |
— | — | Input tensor of shape (N, C, D1, ..., Dr) whose values are sampled. |
required |
grid |
grid |
T |
— | — | Flow-field of shape (N, D1_out, ..., Dr_out, r) with normalized sampling coordinates in [-1, 1]. |
required |
Outputs
| Name | Bind key | Logical dtype | Rank | Shape | Description | Presence |
|---|---|---|---|---|---|---|
Y |
y |
T |
same as grid |
derived; see description | Output tensor of shape (N, C, D1_out, ..., Dr_out) containing the interpolated samples. |
required |
Attributes
Default values (overridable per request):
| Attribute | Default | Description |
|---|---|---|
mode |
"linear" |
Interpolation method: linear (bilinear or trilinear, depending on rank), nearest, or cubic. Cubic interpolation is supported for rank-4 (2-D spatial) inputs. |
padding_mode |
"zeros" |
How out-of-bound grid positions are handled: zeros pads with 0, border clamps to the border value, or reflection reflects coordinates back into the valid range. |
align_corners |
0 |
When 1, extrema values -1 and 1 map to the center of the corner pixels; when 0 (default) they map to the outer edge of corner pixels, making sampling resolution-agnostic. |
Type constraints
| Variable | Allowed dtypes |
|---|---|
T |
float32, float16 |
Files
metadata.json— kernel metadata (id, digests, provenance)manifest.json— the op contract (source of truth)test.json— correctness casesbench.json— benchmark + tuning casesgrid-sample.wgsl.jinjagrid-sample3d.wgsl.jinja
Use with @huggingface/kernels
The loader derives every required output's shape and logical dtype from the manifest contract and this call. It then allocates the result tensors automatically.
The version: 1 option selects the published kernel contract; it is independent of any operator opset, contrib since_version, or model version.
Replace each *Data placeholder with a typed array containing the corresponding input data.
import { getKernel } from "@huggingface/kernels";
const kernel = await getKernel("webgpu-kernels/ai.onnx.GridSample", { version: 1 });
const { y } = await kernel({
x: { data: xData, shape: [1, 1, 2, 2] },
grid: { data: gridData, shape: [1, 1, 3, 2] },
});
- Downloads last month
- -
Requires WebGPU support. See the compatibility table.