nvidia.dali.fn.reshape#

nvidia.dali.fn.reshape(__data, __shape_input=None, /, *, bytes_per_sample_hint=[0], layout='', preserve=False, rel_shape=[], shape=[], src_dims=[], device=None, name=None)#

将输入的内容视为具有不同的形状和/或布局。

缓冲区内容不会被复制。

此运算符允许序列输入并支持体积数据。

支持的后端
  • ‘cpu’

  • ‘gpu’

参数:
  • __data (TensorList) – 要 reshape 的数据

  • __shape_input (1D TensorList of integers, optional) – 与 shape 关键字参数相同

关键字参数:
  • bytes_per_sample_hint (int 或 list of int, optional, default = [0]) –

    每个样本的输出大小提示(以字节为单位)。

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

  • layout (layout str, optional, default = ‘’) –

    数据的新布局。

    如果未指定值,如果维度数与现有布局匹配,则保留输出布局。如果维度数不匹配,则参数重置为空。如果设置了值且不为空,则布局必须与输出的维度匹配。

  • preserve (bool, optional, default = False) – 即使运算符的输出未使用,也阻止将其从图中移除。

  • rel_shape (float 或 list of float 或 TensorList of float, optional, default = []) –

    输出的相对形状。

    输出形状通过将输入形状乘以 rel_shape 计算得出

    out_shape[i] = in_shape[i] * rel_shape[i]
    

    可以使用额外的参数 src_dims 来更改用于计算输出形状的源维度

    out_shape[i] = in_shape[src_dims[i]] * rel_shape[i]
    

    可以有一个负 extent 接收匹配输入体积所需的大小。例如,形状为 [480, 640, 3] 的输入和 rel_shape = [0.5, -1] 会导致输出形状为 [240, 3840]

    维度的数量受以下限制

    • 如果使用 src_dims 参数,则 src_dimsrel_shape 中的元素数量必须匹配

    • 否则,rel_shape 的长度不得超过输入中的维度数,除非 rel_shape 中的最后一个元素为负数,在这种情况下,将在末尾添加一个额外的维度

    注意

    rel_shapeshape 是互斥的。

  • shape (int 或 list of int 或 TensorList of int, optional, default = []) –

    所需的输出形状。

    可以有一个负 extent 接收匹配输入体积所需的大小。例如,形状为 [480, 640, 3] 的输入和 shape = [240, -1] 会导致输出形状为 [240, 3840]

    注意

    rel_shapeshape 是互斥的。

  • src_dims (int 或 list of int 或 TensorList of int, optional, default = []) –

    要保留的维度的索引。

    此参数可用于操作现有维度的顺序或删除或添加维度。特殊索引值 -1 可用于插入新维度。

    例如,reshape 形状为 [300, 200, 1] 的样本和 src_dims 参数 [-1, 1, 0] 会生成输出形状 [1, 200, 300]。在开头插入一个 extent 为 1 的前导维度,后跟第一个原始维度,但顺序相反。最后一个维度被删除。

    src_dims 参数可以与 rel_shape 一起使用,在这种情况下,rel_shape 中的相对 extent 描述目标维度。在上面的示例中,指定 rel_shape = [-1, 0.5, 2] 将导致输出形状 [1, 100, 600]

    所有索引都必须在输入的有效维度范围内,或为 -1。