estrutura DML_CONVOLUTION_INTEGER_OPERATOR_DESC (directml.h)
Executa uma convolução do FilterTensor com o InputTensor. Esse operador executa a convolução de encaminhamento em dados inteiros. Tensores de ponto zero opcionais também podem ser usados para subtrair valores de ponto zero do tensor de entrada e filtro.
Sintaxe
struct DML_CONVOLUTION_INTEGER_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *InputZeroPointTensor;
const DML_TENSOR_DESC *FilterTensor;
const DML_TENSOR_DESC *FilterZeroPointTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT DimensionCount;
const UINT *Strides;
const UINT *Dilations;
const UINT *StartPadding;
const UINT *EndPadding;
UINT GroupCount;
};
Membros
InputTensor
Tipo: const DML_TENSOR_DESC*
Um tensor que contém os dados de entrada. As dimensões esperadas do InputTensor são { BatchCount, InputChannelCount, InputHeight, InputWidth }
.
InputZeroPointTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Um tensor opcional que contém os dados de ponto zero de entrada. As dimensões esperadas do InputZeroPointTensor são { 1, 1, 1, 1 }
.
FilterTensor
Tipo: const DML_TENSOR_DESC*
Um tensor que contém os dados de filtro. As dimensões esperadas do FilterTensor são { FilterBatchCount, FilterChannelCount, FilterHeight, FilterWidth }
.
FilterZeroPointTensor
Tipo: _Maybenull_ const DML_TENSOR_DESC*
Um tensor opcional que contém os dados de ponto zero de filtro. As dimensões esperadas do FilterZeroPointTensor serão { 1, 1, 1, 1 }
se a quantização por tensor for necessária ou { 1, OutputChannelCount, 1, 1 }
se a quantização por canal for necessária.
OutputTensor
Tipo: const DML_TENSOR_DESC*
O tensor no qual gravar os resultados. As dimensões esperadas do OutputTensor são { BatchCount, OutputChannelCount, OutputHeight, OutputWidth }
.
DimensionCount
Tipo: UINT
O número de dimensões espaciais para a operação de convolução. Dimensões espaciais são as dimensões inferiores do FilterTensor de convolução. Esse valor também determina o tamanho das matrizes Strides, Dilations, StartPadding e EndPadding . Há suporte apenas para um valor de 2.
Strides
Tipo: _Field_size_(DimensionCount) const UINT*
Uma matriz que contém os passos da operação de convolução. Esses passos são aplicados ao filtro de convolução. Eles são separados dos passos tensores incluídos em DML_TENSOR_DESC.
Dilations
Tipo: _Field_size_(DimensionCount) const UINT*
Uma matriz que contém as vibrações da operação de convolução. As vibrações são avanços aplicados aos elementos do kernel de filtro. Isso tem o efeito de simular um kernel de filtro maior preenchendo os elementos de kernel de filtro interno com zeros.
StartPadding
Tipo: _Field_size_(DimensionCount) const UINT*
Uma matriz que contém os valores de preenchimento a serem aplicados ao início de cada dimensão espacial do filtro e tensor de entrada da operação de convolução.
EndPadding
Tipo: _Field_size_(DimensionCount) const UINT*
Uma matriz que contém os valores de preenchimento a serem aplicados ao final de cada dimensão espacial do filtro e tensor de entrada da operação de convolução.
GroupCount
Tipo: UINT
O número de grupos nos quais dividir a operação de convolução. GroupCount pode ser usado para obter convolução em profundidade definindo GroupCount igual à contagem de canais de entrada. Isso divide a convolução em uma convolução separada por canal de entrada.
Disponibilidade
Esse operador foi introduzido no DML_FEATURE_LEVEL_2_1
.
Restrições do Tensor
- FilterZeroPointTensor e InputZeroPointTensor devem ter o mesmo DimensionCount.
- FilterTensor, InputTensor e OutputTensor devem ter o mesmo DimensionCount.
- InputTensor e InputZeroPointTensor devem ter o mesmo DataType.
- FilterTensor e FilterZeroPointTensor devem ter o mesmo DataType.
Suporte ao Tensor
DML_FEATURE_LEVEL_4_0 e superior
Tensor | Tipo | Dimensões | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|---|
InputTensor | Entrada | { BatchCount, InputChannelCount, [InputHeight], InputWidth } | 3 a 4 | INT8, UINT8 |
InputZeroPointTensor | Entrada opcional | { [1], [1], [1], 1 } | 1 a 4 | INT8, UINT8 |
FilterTensor | Entrada | { FilterBatchCount, FilterChannelCount, [FilterHeight], FilterWidth } | 3 a 4 | INT8, UINT8 |
FilterZeroPointTensor | Entrada opcional | { [1], FilterZeroPointChannelCount, [1], [1] } | 1 a 4 | INT8, UINT8 |
OutputTensor | Saída | { BatchCount, OutputChannelCount, [OutputHeight], OutputWidth } | 3 a 4 | INT32 |
DML_FEATURE_LEVEL_2_1 e superior
Tensor | Tipo | Dimensões | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|---|
InputTensor | Entrada | { BatchCount, InputChannelCount, InputHeight, InputWidth } | 4 | INT8, UINT8 |
InputZeroPointTensor | Entrada opcional | { 1, 1, 1, 1 } | 4 | INT8, UINT8 |
FilterTensor | Entrada | { FilterBatchCount, FilterChannelCount, FilterHeight, FilterWidth } | 4 | INT8, UINT8 |
FilterZeroPointTensor | Entrada opcional | { 1, FilterZeroPointChannelCount, 1, 1 } | 4 | INT8, UINT8 |
OutputTensor | Saída | { BatchCount, OutputChannelCount, OutputHeight, OutputWidth } | 4 | INT32 |
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 10 Build 20348 |
Servidor mínimo com suporte | Windows 10 Build 20348 |
Cabeçalho | directml.h |