GridSample

GridSample - 22

版本

  • name: GridSample (GitHub)

  • domain: main

  • since_version: 22

  • function: False

  • support_level: SupportType.COMMON

  • shape inference: True

该算子的此版本自版本22起可用。

摘要

给定输入 X 和流场 grid,使用 X 的值和 grid 中的像素位置计算输出 Y。对于形状为 (N, C, H, W) 的空间输入 Xgrid 的形状将为 (N, H_out, W_out, 2),输出 Y 的形状将为 (N, C, H_out, W_out)。对于形状为 (N, C, D, H, W) 的体数据输入 Xgrid 的形状将为 (N, D_out, H_out, W_out, 3),输出 Y 的形状将为 (N, C, D_out, H_out, W_out)。更一般地,对于形状为 (N, C, d1, d2, …, dr) 的 r+2 秩输入 Xgrid 的形状将为 (N, D1_out, D2_out, …, Dr_out, r),输出 Y 的形状将为 (N, C, D1_out, D2_out, …, Dr_out)。

张量 X 包含方形像素(体素等)中心位置(例如 (n, c, d1_in, d2_in, …, dr_in))的值。张量 grid 中的 (n, d1_out, d2_out, …, dr_out, :) 值是用于插值输出张量 Y 中 (n, c, d1_out, d2_out, …, dr_out) 位置的值的归一化位置,插值方法(mode)和填充模式(padding_mode,用于 grid 位置落在二维图像之外的情况)将根据指定的方式选择。

例如,grid[n, h_out, w_out, :] 中的值是大小为2的向量,指定了 X 的二维空间中的归一化位置。它们用于插值 Y[n, c, h_out, w_out] 的输出值。

GridSample 算子常用于 Spatial Transformer Networks 中的网格生成器和采样器。也可参考 torch.nn.functional.grid_sample

属性

  • align_corners - INT (默认值为 '0')

    如果 align_corners=1,极值(-1和1)被视为输入角像素(体素等)的中心点。如果 align_corners=0,它们被视为输入角像素(体素等)的角点,这使得采样与分辨率无关。

  • mode - STRING (默认值为 'linear')

    三种插值模式:linear(默认)、nearest 和 cubic。“linear”模式根据输入张量的空间维度数量包含线性插值和N线性插值模式(例如,1个空间维度为线性,2个空间维度为双线性等)。“cubic”模式也遵循相同的规则包含N三次插值模式。“nearest”模式在采样点正好位于两个索引之间时,会四舍五入到最近的偶数索引。

  • padding_mode - STRING (默认值为 'zeros')

    支持网格外部值的填充模式:zeros(默认)、borderreflection。zeros:对越界的网格位置使用0值,border:对越界的网格位置使用边界值,reflection:对越界的网格位置使用通过边界反射的位置的值。如果索引0表示边缘像素,则索引-1处的反射值将与索引1处的值相同。对于远离边界的位置,它将持续反射直到进入边界。如果像素位置 x = -3.5 通过边界 -1 反射后变为 x' = 1.5,然后通过边界 1 反射后变为 x'' = 0.5。

输入

  • X (异构) - T1

    秩为r+2的输入张量,形状为 (N, C, D1, D2, …, Dr),其中 N 是批量大小,C 是通道数,D1, D2, …, Dr 是空间维度。

  • grid (异构) - T2

    形状为 (N, D1_out, D2_out, …, Dr_out, r) 的输入偏移量,其中 D1_out, D2_out, …, Dr_out 是网格和输出的空间维度,r 是空间维度的数量。Grid 指定了按输入空间维度归一化的采样位置。因此,其大多数值应在 [-1, 1] 范围内。如果网格的值超出 [-1, 1] 范围,相应的输出将按照 padding_mode 的定义进行处理。遵循计算机视觉的约定,长度为r的位置向量中的坐标从张量最里面的维度到最外面的维度排列,这与常规张量索引相反。

输出

  • Y (异构) - T1

    秩为r+2的输出张量,包含采样值,形状为 (N, C, D1_out, D2_out, …, Dr_out)。对于整数输入类型,中间值计算为浮点数,最后再转换为整数。

类型约束

  • T1 属于 ( tensor(bfloat16), tensor(bool), tensor(complex128), tensor(complex64), tensor(double), tensor(float), tensor(float16), tensor(int16), tensor(int32), tensor(int64), tensor(int8), tensor(string), tensor(uint16), tensor(uint32), tensor(uint64), tensor(uint8) )

    限制输入 X 和输出 Y 的类型为所有张量类型。

  • T2 属于 ( tensor(bfloat16), tensor(double), tensor(float), tensor(float16) )

    限制 grid 的类型为浮点张量。

GridSample - 20

版本

  • name: GridSample (GitHub)

  • domain: main

  • since_version: 20

  • function: False

  • support_level: SupportType.COMMON

  • shape inference: True

该算子的此版本自版本20起可用。

摘要

给定输入 X 和流场 grid,使用 X 的值和 grid 中的像素位置计算输出 Y。对于形状为 (N, C, H, W) 的空间输入 Xgrid 的形状将为 (N, H_out, W_out, 2),输出 Y 的形状将为 (N, C, H_out, W_out)。对于形状为 (N, C, D, H, W) 的体数据输入 Xgrid 的形状将为 (N, D_out, H_out, W_out, 3),输出 Y 的形状将为 (N, C, D_out, H_out, W_out)。更一般地,对于形状为 (N, C, d1, d2, …, dr) 的 r+2 秩输入 Xgrid 的形状将为 (N, D1_out, D2_out, …, Dr_out, r),输出 Y 的形状将为 (N, C, D1_out, D2_out, …, Dr_out)。

张量 X 包含方形像素(体素等)中心位置(例如 (n, c, d1_in, d2_in, …, dr_in))的值。张量 grid 中的 (n, d1_out, d2_out, …, dr_out, :) 值是用于插值输出张量 Y 中 (n, c, d1_out, d2_out, …, dr_out) 位置的值的归一化位置,插值方法(mode)和填充模式(padding_mode,用于 grid 位置落在二维图像之外的情况)将根据指定的方式选择。

例如,grid[n, h_out, w_out, :] 中的值是大小为2的向量,指定了 X 的二维空间中的归一化位置。它们用于插值 Y[n, c, h_out, w_out] 的输出值。

GridSample 算子常用于 Spatial Transformer Networks 中的网格生成器和采样器。也可参考 torch.nn.functional.grid_sample

属性

  • align_corners - INT (默认值为 '0')

    如果 align_corners=1,极值(-1和1)被视为输入角像素(体素等)的中心点。如果 align_corners=0,它们被视为输入角像素(体素等)的角点,这使得采样与分辨率无关。

  • mode - STRING (默认值为 'linear')

    三种插值模式:linear(默认)、nearest 和 cubic。“linear”模式根据输入张量的空间维度数量包含线性插值和N线性插值模式(例如,1个空间维度为线性,2个空间维度为双线性等)。“cubic”模式也遵循相同的规则包含N三次插值模式。“nearest”模式在采样点正好位于两个索引之间时,会四舍五入到最近的偶数索引。

  • padding_mode - STRING (默认值为 'zeros')

    支持网格外部值的填充模式:zeros(默认)、borderreflection。zeros:对越界的网格位置使用0值,border:对越界的网格位置使用边界值,reflection:对越界的网格位置使用通过边界反射的位置的值。如果索引0表示边缘像素,则索引-1处的反射值将与索引1处的值相同。对于远离边界的位置,它将持续反射直到进入边界。如果像素位置 x = -3.5 通过边界 -1 反射后变为 x' = 1.5,然后通过边界 1 反射后变为 x'' = 0.5。

输入

  • X (异构) - T1

    秩为r+2的输入张量,形状为 (N, C, D1, D2, …, Dr),其中 N 是批量大小,C 是通道数,D1, D2, …, Dr 是空间维度。

  • grid (异构) - T2

    形状为 (N, D1_out, D2_out, …, Dr_out, r) 的输入偏移量,其中 D1_out, D2_out, …, Dr_out 是网格和输出的空间维度,r 是空间维度的数量。Grid 指定了按输入空间维度归一化的采样位置。因此,其大多数值应在 [-1, 1] 范围内。如果网格的值超出 [-1, 1] 范围,相应的输出将按照 padding_mode 的定义进行处理。遵循计算机视觉的约定,长度为r的位置向量中的坐标从张量最里面的维度到最外面的维度排列,这与常规张量索引相反。

输出

  • Y (异构) - T1

    秩为r+2的输出张量,包含采样值,形状为 (N, C, D1_out, D2_out, …, Dr_out)。对于整数输入类型,中间值计算为浮点数,最后再转换为整数。

类型约束

  • T1 属于 ( tensor(bool), tensor(complex128), tensor(complex64), tensor(double), tensor(float), tensor(float16), tensor(int16), tensor(int32), tensor(int64), tensor(int8), tensor(string), tensor(uint16), tensor(uint32), tensor(uint64), tensor(uint8) )

    限制输入 X 和输出 Y 的类型为所有张量类型。

  • T2 属于 ( tensor(double), tensor(float), tensor(float16) )

    限制 grid 的类型为浮点张量。

GridSample - 16

版本

  • name: GridSample (GitHub)

  • domain: main

  • since_version: 16

  • function: False

  • support_level: SupportType.COMMON

  • shape inference: True

该算子的此版本自版本16起可用。

摘要

给定输入 X 和流场 grid,使用 X 的值和 grid 中的像素位置计算输出 Y。目前仅支持空间(4维)输入。对于形状为 (N, C, H, W) 的输入 X 和形状为 (N, H_out, W_out, 2) 的 grid,输出 Y 的形状将为 (N, C, H_out, W_out)。

张量 X 包含 H x W 二维图像中方形像素中心的值。张量 grid 描述了用于计算输出 Y 的归一化位置,计算时使用指定的插值方法(mode)和填充模式(对于网格位置落在二维图像之外的情况)。

grid[N, H_out, W_out] 中的元素是大小为2的向量,指定了 X 的二维空间中的位置。它们用于插值 Y[N, C, H_out, W_out] 的输出值。

GridSample 算子常用于 Spatial Transformer Networks 中的网格生成器和采样器。也可参考 torch.nn.functional.grid_sample

属性

  • align_corners - INT (默认值为 '0')

    如果 align_corners=1,极值(-1和1)被视为输入角像素的中心点。如果 align_corners=0,它们被视为输入角像素的角点,这使得采样与分辨率无关。

  • mode - STRING (默认值为 'bilinear')

    三种插值模式:bilinear(默认)、nearest 和 bicubic。

  • padding_mode - STRING (默认值为 'zeros')

    支持网格外部值的填充模式:zeros(默认)、borderreflection。zeros:对越界的网格位置使用0值,border:对越界的网格位置使用边界值,reflection:对越界的网格位置使用通过边界反射的位置的值。如果索引0表示边缘像素,则索引-1处的反射值将与索引1处的值相同。对于远离边界的位置,它将持续反射直到进入边界。如果像素位置 x = -3.5 通过边界 -1 反射后变为 x' = 1.5,然后通过边界 1 反射后变为 x'' = 0.5。

输入

  • X (异构) - T1

    形状为 (N, C, H, W) 的4维张量,其中 N 是批量大小,C 是通道数,H 和 W 是输入数据的高度和宽度。

  • grid (异构) - T2

    输入偏移量,形状为 (N, H_out, W_out, 2) 的4维张量,其中 H_out 和 W_out 是网格和输出的高度和宽度。Grid 指定了按输入空间维度归一化的采样像素位置。因此,其大多数值应在 [-1, 1] 范围内。如果网格的值超出 [-1, 1] 范围,相应的输出将按照 padding_mode 的定义进行处理。

输出

  • Y (异构) - T1

    形状为 (N, C, H_out, W_out) 的4维张量,包含采样值。对于整数输入类型,中间值计算为浮点数,最后再转换为整数。

类型约束

  • T1 属于 ( tensor(bool), tensor(complex128), tensor(complex64), tensor(double), tensor(float), tensor(float16), tensor(int16), tensor(int32), tensor(int64), tensor(int8), tensor(string), tensor(uint16), tensor(uint32), tensor(uint64), tensor(uint8) )

    限制输入 X 和输出 Y 的类型为所有张量类型。

  • T2 属于 ( tensor(double), tensor(float), tensor(float16) )

    限制 grid 的类型为浮点张量。