Compartir a través de


estructura DML_SPLIT_OPERATOR_DESC (directml.h)

Divide un tensor de entrada a lo largo de un eje en varios tensores de salida.

Todos los tensores de entrada y salida deben tener los mismos tamaños, excepto para el eje dividido. El tamaño del tensor de entrada en el eje dividido determina las posibles divisiones. Por ejemplo, si el eje dividido del tensor de entrada tiene el tamaño 3, hay estas posibles divisiones: 1+1+1 (3 salidas), 1+2 (2 salidas), 2+1 (2 salidas) o 3 (1 salida, que es simplemente una copia del tensor de entrada). Los tamaños del eje dividido de los tensores de salida deben sumar exactamente el tamaño del eje dividido del tensor de entrada. Estas restricciones se muestran en el pseudocódigo siguiente.

splitSize = 0;

for (i = 0; i < OutputCount; i++) {
    assert(outputTensors[i]->DimensionCount == inputTensor->DimensionCount);
    for (dim = 0; dim < inputTensor->DimensionCount; dim++) {
        if (dim == Axis) { splitSize += outputTensors[i]->Sizes[dim]; }
        else { assert(outputTensors[i]->Sizes[dim] == inputTensor->Sizes[dim]); }
    }
}

assert(splitSize == inputTensor->Sizes[Axis]);

La división en un único tensor de salida simplemente genera una copia del tensor de entrada.

Este operador es el inverso de DML_JOIN_OPERATOR_DESC.

Sintaxis

struct DML_SPLIT_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  UINT                  OutputCount;
  const DML_TENSOR_DESC *OutputTensors;
  UINT                  Axis;
};

Miembros

InputTensor

Tipo: const DML_TENSOR_DESC*

Tensor que se va a dividir en varios tensores de salida.

OutputCount

Tipo: UINT

Este campo determina el tamaño de la matriz OutputTensors . Este valor debe ser mayor que 0.

OutputTensors

Tipo: const DML_TENSOR_DESC*

Matriz que contiene las descripciones de los tensores divididos en el tensor de entrada. Los tamaños de salida deben tener los mismos tamaños que el tensor de entrada, excepto el eje dividido.

Axis

Tipo: UINT

Índice de la dimensión del tensor de entrada que se va a dividir. Todos los tensores de entrada y salida deben tener tamaños idénticos en todas las dimensiones, excepto en este eje. Este valor debe estar en el intervalo [0, InputTensor.DimensionCount - 1].

Ejemplos

En los ejemplos siguientes se usa este mismo tensor de entrada.

InputTensor: (Sizes:{1, 1, 6, 2}, DataType:FLOAT32)
[[[[1, 2],
   [3, 4],
   [5, 6],
   [7, 8],
   [9, 10],
   [11, 12]]]]

Ejemplo 1. División del eje 2

OutputCount: 3
Axis: 2

OutputTensors[0]: (Sizes:{1, 1, 2, 2}, DataType:FLOAT32)
[[[[1, 2],
   [3, 4]]]]

OutputTensors[1]: (Sizes:{1, 1, 1, 2}, DataType:FLOAT32)
[[[[5, 6]]]]

OutputTensors[2]: (Sizes:{1, 1, 3, 2}, DataType:FLOAT32)
[[[[7, 8],
   [9, 10],
   [11, 12]]]]

Ejemplo 2. División del eje 3

OutputCount: 2
Axis: 3

OutputTensors[0]: (Sizes:{1, 1, 6, 1}, DataType:FLOAT32)
[[[[1],
   [3],
   [5],
   [7],
   [9],
   [11]]]]

OutputTensors[1]: (Sizes:{1, 1, 6, 1}, DataType:FLOAT32)
[[[[2],
   [4],
   [6],
   [8],
   [10],
   [12]]]]

Disponibilidad

Este operador se introdujo en DML_FEATURE_LEVEL_1_0.

Restricciones tensor

InputTensor y OutputTensors deben tener el mismo DataType y DimensionCount.

Compatibilidad con Tensor

DML_FEATURE_LEVEL_4_1 y versiones posteriores

Tensor Clase Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada De 1 a 8 FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8
OutputTensors Matriz de salidas De 1 a 8 FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_3_0 y versiones posteriores

Tensor Clase Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada De 1 a 8 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputTensors Matriz de salidas De 1 a 8 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_2_1 y versiones posteriores

Tensor Clase Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada 4 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8
OutputTensors Matriz de salidas 4 FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8

DML_FEATURE_LEVEL_1_0 y versiones posteriores

Tensor Clase Recuentos de dimensiones admitidos Tipos de datos admitidos
InputTensor Entrada 4 FLOAT32, FLOAT16, INT32, INT16, UINT32, UINT16
OutputTensors Matriz de salidas 4 FLOAT32, FLOAT16, INT32, INT16, UINT32, UINT16

Requisitos

Requisito Valor
Header directml.h