Compartir a través de


estructura DML_DEPTH_TO_SPACE1_OPERATOR_DESC (directml.h)

Reorganiza (permuta) los datos de profundidad en bloques de datos espaciales. El operador genera una copia del tensor de entrada donde los valores de la dimensión de profundidad se mueven en bloques espaciales a las dimensiones de alto y ancho.

Esta es la transformación inversa de DML_SPACE_TO_DEPTH1_OPERATOR_DESC.

Sintaxis

struct DML_DEPTH_TO_SPACE1_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *OutputTensor;
  UINT                  BlockSize;
  DML_DEPTH_SPACE_ORDER Order;
};

Miembros

InputTensor

Tipo: const DML_TENSOR_DESC*

Tensor del que se va a leer. Las dimensiones del tensor de entrada son { BatchCount, InputChannelCount, InputHeight, InputWidth }.

OutputTensor

Tipo: const DML_TENSOR_DESC*

Tensor en el que se van a escribir los resultados. Las dimensiones del tensor de salida son { BatchCount, OutputChannelCount, OutputHeight, OutputWidth }, donde:

  • OutputChannelCount se calcula como InputChannelCount / (BlockSize * BlockSize)
  • OutputHeight se calcula como InputHeight * BlockSize
  • OutputWidth se calcula como InputWidth * BlockSize

BlockSize

Tipo: UINT

Ancho y alto de los bloques que se mueven.

Order

Tipo: DML_DEPTH_SPACE_ORDER

Consulte DML_DEPTH_SPACE_ORDER.

Ejemplos

Todos los ejemplos de esta sección usan la entrada siguiente.

InputTensor: (Sizes:{1, 8, 2, 3}, DataType:UINT32)
[[[[0,   1,  2],
   [3,   4,  5]],
  [[9,  10, 11],
   [12, 13, 14]],
  [[18, 19, 20],
   [21, 22, 23]],
  [[27, 28, 29],
   [30, 31, 32]],
  [[36, 37, 38],
   [39, 40, 41]],
  [[45, 46, 47],
   [48, 49, 50]],
  [[54, 55, 56],
   [57, 58, 59]],
  [[63, 64, 65],
   [66, 67, 68]]]]

Ejemplo 1. Orden de fila de columna de profundidad

BlockSize: 2
Order: DML_DEPTH_SPACE_ORDER_DEPTH_COLUMN_ROW
OutputTensor: (Sizes:{1, 2, 4, 6}, DataType:UINT32)
 [[[[ 0, 18,  1, 19,  2, 20],
    [36, 54, 37, 55, 38, 56],
    [ 3, 21,  4, 22,  5, 23],
    [39, 57, 40, 58, 41, 59]],
   [[ 9, 27, 10, 28, 11, 29],
    [45, 63, 46, 64, 47, 65],
    [12, 30, 13, 31, 14, 32],
    [48, 66, 49, 67, 50, 68]]]]

Ejemplo 2. Orden de profundidad de fila de columna

BlockSize: 2
Order: DML_DEPTH_SPACE_ORDER_COLUMN_ROW_DEPTH
OutputTensor: (Sizes:{1, 2, 4, 6}, DataType:UINT32)
[[[[ 0,  9,  1, 10,  2, 11],
   [18, 27, 19, 28, 20, 29],
   [ 3, 12,  4, 13,  5, 14],
   [21, 30, 22, 31, 23, 32]],
  [[36, 45, 37, 46, 38, 47],
   [54, 63, 55, 64, 56, 65],
   [39, 48, 40, 49, 41, 50],
   [57, 66, 58, 67, 59, 68]]]]

Comentarios

Cuando Order se establece en DML_DEPTH_SPACE_ORDER_DEPTH_COLUMN_ROW, DML_DEPTH_TO_SPACE1_OPERATOR_DESC equivale a DML_DEPTH_TO_SPACE_OPERATOR_DESC.

Disponibilidad

Este operador se introdujo en DML_FEATURE_LEVEL_2_1.

Restricciones tensor

InputTensor y OutputTensor deben tener el mismo tipo de datos.

Compatibilidad con Tensor

DML_FEATURE_LEVEL_5_0 y versiones posteriores

Tensor Clase Dimensions Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada { BatchCount, InputChannelCount, InputHeight, InputWidth } 4 FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8
OutputTensor Resultados { BatchCount, OutputChannelCount, OutputHeight, OutputWidth } 4 FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_2_1 y versiones posteriores

Tensor Clase Dimensions Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada { BatchCount, InputChannelCount, InputHeight, InputWidth } 4 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputTensor Resultados { BatchCount, OutputChannelCount, OutputHeight, OutputWidth } 4 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8

Requisitos

Requisito Value
Cliente mínimo compatible compilación 20348 de Windows 10
Servidor mínimo compatible compilación 20348 de Windows 10
Encabezado directml.h

Consulte también