estrutura DML_CUMULATIVE_PRODUCT_OPERATOR_DESC (directml.h)
Multiplica os elementos de um tensor ao longo de um eixo, gravando a contagem em execução do produto no tensor de saída.
Sintaxe
struct DML_CUMULATIVE_PRODUCT_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT Axis;
DML_AXIS_DIRECTION AxisDirection;
BOOL HasExclusiveProduct;
};
Membros
InputTensor
Tipo: const DML_TENSOR_DESC*
Um tensor que contém os dados de entrada. Normalmente, esse é o mesmo tensor que foi fornecido como InputTensor para DML_BATCH_NORMALIZATION_OPERATOR_DESC no passe para frente.
O tensor de entrada que contém elementos a serem multiplicados.
OutputTensor
Tipo: const DML_TENSOR_DESC*
O tensor de saída para o qual gravar os produtos cumulativos resultantes. Esse tensor deve ter os mesmos tamanhos e tipo de dados que InputTensor.
Axis
Tipo: UINT
O índice da dimensão para multiplicar elementos. Esse valor deve ser menor que o DimensionCount do InputTensor.
AxisDirection
Tipo: DML_AXIS_DIRECTION
Um dos valores da enumeração DML_AXIS_DIRECTION . Se definido como DML_AXIS_DIRECTION_INCREASING, o produto ocorrerá atravessando o tensor ao longo do eixo especificado pelo índice de elemento crescente. Se definido como DML_AXIS_DIRECTION_DECREASING, o inverso será true e o produto ocorrerá atravessando elementos por índice decrescente.
HasExclusiveProduct
Tipo: BOOL
Se TRUE, o valor do elemento atual será excluído ao gravar a contagem em execução no tensor de saída. Se FALSE, o valor do elemento atual será incluído na contagem em execução.
Exemplos
Os exemplos nesta seção usam esse mesmo tensor de entrada.
InputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[2, 1, 3, 5],
[3, 8, 7, 3],
[9, 6, 2, 4]]]]
Exemplo 1. Produto cumulativo entre lascas horizontais
Axis: 3
AxisDirection: DML_AXIS_DIRECTION_INCREASING
HasExclusiveProduct: FALSE
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[2, 2, 6, 30], // i.e. [2, 2*1, 2*1*3, 2*1*3*5]
[3, 24, 168, 504], // [... ]
[9, 54, 108, 432]]]] // [... ]
Exemplo 2. Produtos exclusivos
Definir HasExclusiveProduct como TRUE tem o efeito de excluir o valor do elemento atual da contagem em execução ao gravar no tensor de saída.
Axis: 3
AxisDirection: DML_AXIS_DIRECTION_INCREASING
HasExclusiveProduct: TRUE
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[1, 2, 2, 6], // Notice the product is written before multiplying the input,
[1, 3, 24, 168], // and the final total is not written to any output.
[1, 9, 54, 108]]]]
Exemplo 3. Direção do eixo
Definir AxisDirectioncomo DML_AXIS_DIRECTION_DECREASING tem o efeito de reverter a ordem de passagem de elementos ao calcular a contagem em execução.
Axis: 3
AxisDirection: DML_AXIS_DIRECTION_DECREASING
HasExclusiveProduct: FALSE
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[ 30, 15, 15, 5], // i.e. [2*1*3*5, 1*3*5, 3*5, 5]
[504, 168, 21, 3], // [... ]
[432, 48, 8, 4]]]] // [... ]
Exemplo 4. Multiplicando ao longo de um eixo diferente
Neste exemplo, o produto ocorre verticalmente, ao longo do eixo de altura (segunda dimensão).
Axis: 2
AxisDirection: DML_AXIS_DIRECTION_INCREASING
HasExclusiveProduct: FALSE
OutputTensor: (Sizes:{1,1,3,4}, DataType:FLOAT32)
[[[[ 2, 1, 3, 5], // i.e. [2, ...]
[ 6, 8, 21, 15], // [2*3, ...]
[54, 48, 42, 60]]]] // [2*3*9 ...]
Comentários
Esse operador dá suporte à execução in-loco, o que significa que o tensor de saída tem permissão para alias InputTensor durante a associação.
Disponibilidade
Esse operador foi introduzido em DML_FEATURE_LEVEL_3_1
.
Restrições do Tensor
InputTensor e OutputTensor devem ter os mesmos DataType, DimensionCount e Sizes.
Suporte ao Tensor
DML_FEATURE_LEVEL_5_0 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 1 a 8 | FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32 |
OutputTensor | Saída | 1 a 8 | FLOAT32, FLOAT16, INT64, INT32, UINT64, UINT32 |
DML_FEATURE_LEVEL_4_0 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 1 a 8 | FLOAT32, FLOAT16, INT32, UINT32 |
OutputTensor | Saída | 1 a 8 | FLOAT32, FLOAT16, INT32, UINT32 |
DML_FEATURE_LEVEL_3_1 e superior
Tensor | Tipo | Contagens de dimensões com suporte | Tipos de dados com suporte |
---|---|---|---|
InputTensor | Entrada | 4 | FLOAT32, FLOAT16, INT32, UINT32 |
OutputTensor | Saída | 4 | FLOAT32, FLOAT16, INT32, UINT32 |
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows Build 22000 |
Servidor mínimo com suporte | Windows Build 22000 |
Cabeçalho | directml.h |