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

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
-
kernel
webgpu
wgsl
apache-2.0
WebGPU

Requires WebGPU support. See the compatibility table.