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 |