estructura DML_SLICE_OPERATOR_DESC (directml.h)
Extrae una sola subregión (un "segmento") de un tensor de entrada.
Los elementos copiados en el segmento se determinan con tres valores para cada dimensión.
- El desplazamiento marca el primer elemento que se va a copiar en una dimensión.
- El tamaño marca el número de elementos que se van a copiar en una dimensión.
- El paso indica el incremento o paso del elemento en una dimensión.
Los desplazamientos, tamaños y pasos proporcionados solo deben copiar elementos que estén dentro de los límites del tensor de entrada (no se permiten lecturas fuera de límite). Los tamaños del segmento deben coincidir exactamente con los tamaños de tensor de salida. En general, los elementos copiados se calculan de la siguiente manera.
OutputTensor[OutputCoordinates] = InputTensor[Offsets + Strides * OutputCoordinates]
Sintaxis
struct DML_SLICE_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT DimensionCount;
const UINT *Offsets;
const UINT *Sizes;
const UINT *Strides;
};
Miembros
InputTensor
Tipo: const DML_TENSOR_DESC*
Tensor del que se van a extraer segmentos.
OutputTensor
Tipo: const DML_TENSOR_DESC*
Tensor en el que se van a escribir los resultados de los datos segmentados.
DimensionCount
Tipo: UINT
Número de dimensiones. Este campo determina el tamaño de las matrices Offsets, Sizes y Strides . Este valor debe coincidir con dimensionCount de los tensores de entrada y salida. Este valor debe estar comprendido entre 1 y 8, inclusive, a partir de ; los niveles de DML_FEATURE_LEVEL_3_0
características anteriores requieren un valor de 4 o 5.
Offsets
Tipo: _Field_size_(DimensionCount) const UINT*
Matriz que contiene el inicio del segmento a lo largo de cada dimensión del tensor de entrada, en los elementos .
Sizes
Tipo: _Field_size_(DimensionCount) const UINT*
Matriz que contiene el tamaño del segmento a lo largo de cada dimensión, en elementos. Los valores de esta matriz deben coincidir con los tamaños especificados en el tensor de salida.
Strides
Tipo: _Field_size_(DimensionCount) const UINT*
Matriz que contiene el paso del segmento a lo largo de cada dimensión del tensor de entrada, en los elementos . Un paso mayor que 1 indica que se pueden omitir los elementos del tensor de entrada (por ejemplo, un paso de 2 seleccionará cada segundo elemento a lo largo de la dimensión).
Ejemplos
En los ejemplos siguientes se usa el mismo tensor de entrada:
InputTensor: (Sizes:{1, 1, 4, 4}, DataType:FLOAT32)
[[[[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16]]]]
Ejemplo 1. Segmento contiguo
Offsets = {0, 0, 1, 2}
Sizes = {1, 1, 3, 2}
Strides = {1, 1, 1, 1}
OutputTensor: (Sizes:{1, 1, 3, 2}, DataType:FLOAT32)
[[[[ 7, 8],
[11, 12],
[15, 16]]]]
Ejemplo 2. Segmento estridado
Offsets = {0, 0, 1, 0}
Sizes = {1, 1, 2, 2}
Strides = {1, 1, 2, 3}
OutputTensor: (Sizes:{1, 1, 2, 2}, DataType:FLOAT32)
[[[[ 5, 8],
[13, 16]]]]
Comentarios
Se introdujo una versión más reciente de este operador, DML_SLICE1_OPERATOR_DESC, en DML_FEATURE_LEVEL_2_1
.
Disponibilidad
Este operador se introdujo en DML_FEATURE_LEVEL_1_0
.
Restricciones tensor
InputTensor y OutputTensor 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 |
OutputTensor | Resultados | 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 |
OutputTensor | Resultados | 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 | De 4 a 5 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
OutputTensor | Resultados | De 4 a 5 | 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 | De 4 a 5 | FLOAT32, FLOAT16, INT32, INT16, UINT32, UINT16 |
OutputTensor | Resultados | De 4 a 5 | FLOAT32, FLOAT16, INT32, INT16, UINT32, UINT16 |
Requisitos
Requisito | Valor |
---|---|
Header | directml.h |