nvidia.dali.fn.pad#

nvidia.dali.fn.pad(__input, /, *, align=[], axes=[], axis_names='', bytes_per_sample_hint=[0], fill_value=0.0, preserve=False, shape=[], device=None, name=None)#

使用指定的fill_value在指定的轴上填充所有样本,以匹配这些轴上批次中的最大范围或匹配指定的最小形状。

以下是一些示例

样本在第一个轴上进行填充,以匹配最大样本的范围。

input  = [[3,   4,   2,   5,   4],
          [2,   2],
          [3, 199,   5]];
output = [[3,   4,   2,   5,   4],
          [2,   2,  -1,  -1,  -1],
          [3, 199,   5,  -1,  -1]]

样本在第一个轴上填充到最小范围 7。

input  = [[3,   4,   2,   5,   4],
          [2,   2],
          [3, 199,   5],
          [1,   2,   3,   4,   5,   6,   7,   8]];
output = [[3,   4,   2,   5,   4,  -1,  -1],
          [2,   2,  -1,  -1,  -1,  -1,  -1],
          [3, 199,   5,  -1,  -1,  -1,  -1],
          [1,   2,   3,   4,   5,   6,   7,   8]]

样本在第一个轴上进行填充,以匹配最大样本的范围和对齐要求。输出范围为 8,这是将最大范围 (5) 向上舍入到对齐值 (4) 的倍数的结果。

input  = [[3,   4,   2,   5,   4],
          [2,   2],
          [3, 199,   5]];
output = [[3,   4,   2,   5,   4,  -1,  -1,  -1],
          [2,   2,  -1,  -1,  -1,  -1,  -1,  -1],
          [3, 199,   5,  -1,  -1,  -1,  -1,  -1]]

样本在第一个轴上进行填充,仅以匹配对齐要求。最小范围 (shape) 设置为 1,以避免除对齐所需的任何填充。

input  = [[3,   4,   2,   5,   4],
          [2,   2],
          [3, 199,   5]];
output = [[3,   4,   2,   5,   4,  -1],
          [2,   2],
          [3, 199,   5,  -1]]

样本在第二个轴上进行填充,以匹配最大样本的范围,并使用自定义填充值 42 而不是默认值 0。

input  = [[[1,  2,  3,  4],
           [5,  6,  7,  8]],
          [[1,  2],
           [4,  5]]]
output = [[[1,  2,  3,  4],
           [5,  6,  7,  8]],
          [[1,  2, 42, 42],
           [4,  5, 42, 42]]]

样本在第一个和第二个轴上进行填充,以匹配每个轴的对齐要求。

input  = [[[1,  2,  3,  4],
           [5,  6,  7,  8],
           [9, 10, 11, 12]],
          [[1, 2],
           [4, 5]]]
output = [[[1,  2,  3,  4,  0],
           [5,  6,  7,  8,  0],
           [9, 10, 11, 12,  0],
           [0,  0,  0,  0,  0]],
          [[1,  2,  0,  0,  0],
           [4,  5,  0,  0,  0],
           [0,  0,  0,  0,  0],
           [0,  0,  0,  0,  0]]]

样本在第一个轴上填充到最小范围 4,在第二个轴上填充以匹配批次中最大的样本和对齐值 2。

input  = [[[1,  2,  3],
           [4,  5,  6]],
          [[1, 2],
           [4, 5],
           [6, 7]]]
output = [[[1,  2,  3,  0],
           [4,  5,  6,  0],
           [0,  0,  0,  0],
           [0,  0,  0,  0]],
          [[1,  2,  0,  0],
           [4,  5,  0,  0],
           [6,  7,  0,  0],
           [0,  0,  0,  0]]]
支持的后端
  • ‘cpu’

  • ‘gpu’

参数:

__input (TensorList) – 算子的输入。

关键字参数:
  • align (int 或 list of int 或 TensorList of int, 可选, 默认值 = []) –

    如果指定,此参数确定由axesaxis_names指定的维度上的对齐方式。

    axis = axes[i]上的范围将调整为align[i]的倍数。

    如果提供整数值,则对齐限制将应用于所有填充轴。

    要仅使用对齐,即没有任何默认或显式填充行为,请将指定轴的最小shape设置为 1。

  • axes (int 或 list of int 或 TensorList of int, 可选, 默认值 = []) –

    批次样本将要填充的轴的索引。

    负值被解释为从后面计数维度。有效范围:[-ndim, ndim-1],其中 ndim 是输入数据中的维度数。

    axis_namesaxes参数是互斥的。如果axesaxis_names为空或未提供,则输出将在所有轴上填充。

  • axis_names (layout str, 可选, 默认值 = ‘’) –

    批次样本将要填充的轴的名称。

    axis_namesaxes参数是互斥的。如果axesaxis_names为空或未提供,则输出将在所有轴上填充。

  • bytes_per_sample_hint (int 或 list of int, 可选, 默认值 = [0]) –

    输出大小提示,以字节/样本为单位。

    如果指定,则驻留在 GPU 或分页锁定主机内存中的操作符输出将预先分配,以容纳此大小的样本批次。

  • fill_value (float 或 TensorList of float, 可选, 默认值 = 0.0) – 用于填充批次的值。

  • preserve (bool, 可选, 默认值 = False) – 阻止操作符从图中移除,即使其输出未使用。

  • shape (int 或 list of int 或 TensorList of int, 可选, 默认值 = []) –

    axesaxis_names指定的轴中输出形状的范围。

    为轴指定 -1 会恢复默认行为,即将轴扩展为容纳批次中最大样本的对齐大小。

    如果提供的范围小于样本的范围,则仅应用填充以匹配所需的对齐方式。例如,要禁用轴中的填充,除非对齐是必需的,否则可以指定值 1。