Condividi tramite


DML_PADDING1_OPERATOR_DESC struttura (directml.h)

Gonfia il tensore di input con valori costanti o con mirroring sui bordi e scrive il risultato nell'output.

Sintassi

struct DML_PADDING1_OPERATOR_DESC {
  const DML_TENSOR_DESC *InputTensor;
  const DML_TENSOR_DESC *OutputTensor;
  DML_PADDING_MODE      PaddingMode;
  DML_TENSOR_DATA_TYPE  PaddingValueDataType;
  DML_SCALAR_UNION      PaddingValue;
  UINT                  DimensionCount;
  const UINT            *StartPadding;
  const UINT            *EndPadding;
};

Members

InputTensor

Tipo: const DML_TENSOR_DESC*

Tensor contenente i dati di input.

OutputTensor

Tipo: const DML_TENSOR_DESC*

Tensor contenente i dati di output. Per ogni dimensione i, OutputTensor.Sizes[i] = InputTensor.Sizes[i] + StartPadding[i] + EndPadding[i].

PaddingMode

Tipo: DML_PADDING_MODE*

Modalità di riempimento da usare quando si riempiono le aree di riempimento.

  • DML_PADDING_MODE_CONSTANT. Usa un singolo valore costante definito da PaddingValue per tutti i valori di riempimento (vedere Esempio 1).
  • DML_PADDING_MODE_EDGE. Per ogni dimensione, usare i valori perimetrali di tale dimensione per tutti i valori di riempimento (vedere Esempio 2).
  • DML_PADDING_MODE_REFLECTION. Mirroring dei valori del tensore come se l'abbiamo piegata direttamente sui bordi, il che significa che i bordi non sono mirrorati. Si noti che StartPadding[i] >= InputTensor.Sizes[i], e EndPadding[i] >= InputTensor.Sizes[i] è valido, che significa che è possibile eseguire il mirroring di nuove aree di riempimento periodicamente riducendole rispetto alle aree di riempimento precedenti (vedere Esempio 3).
  • DML_PADDING_MODE_SYMMETRIC. Analogamente a DML_PADDING_MODE_REFLECTION, ma anche i bordi sono mirrorati. Si noti che StartPadding[i] > InputTensor.Sizes[i], e EndPadding[i] > InputTensor.Sizes[i] è valido, che significa che è possibile eseguire il mirroring di nuove aree di riempimento periodicamente piegandoli sulle aree di riempimento precedenti (vedere Esempio 4). Questa modalità è stata introdotta nel livello DML_FEATURE_LEVEL_3_0di funzionalità .

PaddingValueDataType

Tipo: DML_TENSOR_DATA_TYPE

Tipo di dati del membro PaddingValue , che deve corrispondere a OutputTensor.DataType.

PaddingValue

Tipo: DML_SCALAR_UNION

Valore di riempimento da usare quando PaddingMode == DML_PADDING_MODE_CONSTANT, con PaddingValueDataType che determina come interpretare il campo. Questo valore viene ignorato per altre modalità di riempimento.

DimensionCount

Tipo: UINT

Dimensioni delle matrici puntate da StartPadding e EndPadding. Questo valore deve essere lo stesso valore del conteggio delle dimensioni di InputTensor e OutputTensor.

StartPadding

Tipo: _Field_size_(DimensionCount) const UINT*

Dimensioni delle aree di riempimento da aggiungere all'inizio di ogni dimensione. Per ogni dimensione i, StartPadding[i] = OutputTensor.Sizes[i] - InputTensor.Sizes[i] - EndPadding[i].

EndPadding

Tipo: _Field_size_(DimensionCount) const UINT*

Dimensioni delle aree di riempimento da aggiungere alla fine di ogni dimensione. Per ogni dimensione i, EndPadding[i] = OutputTensor.Sizes[i] - InputTensor.Sizes[i] - StartPadding[i].

Commenti

Esempi

Esempio 1

PaddingMode: DML_PADDING_MODE_CONSTANT
PaddingValueDataType: FLOAT32
PaddingValue: 9
StartPadding: {0, 0, 1, 2}
EndPadding: {0, 0, 3, 4}

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

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

Esempio 2

PaddingMode: DML_PADDING_MODE_EDGE
PaddingValueDataType: FLOAT32
StartPadding: {0, 0, 1, 2}
EndPadding: {0, 0, 3, 4}

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

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

Esempio 3

PaddingMode: DML_PADDING_MODE_REFLECTION
PaddingValueDataType: FLOAT32
StartPadding: {0, 0, 1, 2}
EndPadding: {0, 0, 3, 4}

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

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

Esempio 4 (a partire da DML_FEATURE_LEVEL_3_0)

PaddingMode: DML_PADDING_MODE_SYMMETRIC
PaddingValueDataType: FLOAT32
StartPadding: {0, 0, 1, 2}
EndPadding: {0, 0, 3, 4}

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

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

Disponibilità

Questo operatore è stato introdotto in DML_FEATURE_LEVEL_5_0.

Vincoli tensor

InputTensor e OutputTensor devono avere lo stesso Oggetto DataType e DimensionCount.

Supporto di Tensor

Tensore Tipo Conteggi delle dimensioni supportate Tipi di dati supportati
InputTensor Input da 1 a 8 FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8
OutputTensor Output da 1 a 8 FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8

Requisiti

Requisito Valore
Intestazione directml.h