Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Gonfle le tenseur d’entrée avec des valeurs constantes ou mises en miroir sur les bords et écrit le résultat dans la sortie.
Syntaxe
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;
};
Membres
InputTensor
Type : const DML_TENSOR_DESC*
Tenseur contenant les données d’entrée.
OutputTensor
Type : const DML_TENSOR_DESC*
Tenseur contenant les données de sortie. Pour chaque dimension i, OutputTensor.Sizes[i] = InputTensor.Sizes[i] + StartPadding[i] + EndPadding[i].
PaddingMode
Type : DML_PADDING_MODE*
Mode de remplissage à utiliser lors du remplissage des zones de remplissage.
- DML_PADDING_MODE_CONSTANT. Utilise une valeur constante unique définie par PaddingValue pour toutes les valeurs de remplissage (voir l’exemple 1).
- DML_PADDING_MODE_EDGE. Pour chaque dimension, utilisez les valeurs d’arête de cette dimension pour toutes les valeurs de remplissage (voir l’exemple 2).
-
DML_PADDING_MODE_REFLECTION. Mettre en miroir les valeurs du tenseur comme si nous l’avions plié à droite sur les bords, ce qui signifie que les bords ne sont pas mis en miroir. Notez que
StartPadding[i] >= InputTensor.Sizes[i], etEndPadding[i] >= InputTensor.Sizes[i]est valide, ce qui signifie que nous pouvons miroir de nouvelles régions de remplissage régulièrement en les pliant sur les régions de remplissage précédentes (voir l’exemple 3). -
DML_PADDING_MODE_SYMMETRIC. Semblable à DML_PADDING_MODE_REFLECTION, mais les bords sont également mis en miroir. Notez que
StartPadding[i] > InputTensor.Sizes[i], etEndPadding[i] > InputTensor.Sizes[i]est valide, ce qui signifie que nous pouvons miroir de nouvelles régions de remplissage régulièrement en les pliant sur les régions de remplissage précédentes (voir l’exemple 4). Ce mode a été introduit au niveauDML_FEATURE_LEVEL_3_0de la fonctionnalité .
PaddingValueDataType
Type : DML_TENSOR_DATA_TYPE
Type de données du membre PaddingValue , qui doit correspondre à OutputTensor.DataType.
PaddingValue
Type : DML_SCALAR_UNION
Valeur de remplissage à utiliser quand PaddingMode == DML_PADDING_MODE_CONSTANT, avec PaddingValueDataType déterminant comment interpréter le champ. Cette valeur est ignorée pour les autres modes de remplissage.
DimensionCount
Type : UINT
Taille des tableaux pointés par StartPadding et EndPadding. Cette valeur doit être la même que le nombre de dimensions de InputTensor et OutputTensor.
StartPadding
Type : _Field_size_(DimensionCount) const UINT*
Tailles des régions de remplissage à ajouter au début de chaque dimension. Pour chaque dimension i, StartPadding[i] = OutputTensor.Sizes[i] - InputTensor.Sizes[i] - EndPadding[i].
EndPadding
Type : _Field_size_(DimensionCount) const UINT*
Tailles des régions de remplissage à ajouter à la fin de chaque dimension. Pour chaque dimension i, EndPadding[i] = OutputTensor.Sizes[i] - InputTensor.Sizes[i] - StartPadding[i].
Notes
Exemples
Exemple 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]]]]
Exemple 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]]]]
Exemple 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]]]]
Exemple 4 (à partir de 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é
Cet opérateur a été introduit dans DML_FEATURE_LEVEL_5_0.
Contraintes tensoriels
InputTensor et OutputTensor doivent avoir les mêmes DataType et DimensionCount.
Prise en charge des tenseurs
| Tenseur | Genre | Nombre de dimensions pris en charge | Types de données pris en charge |
|---|---|---|---|
| InputTensor | Entrée | 1 à 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
| OutputTensor | Sortie | 1 à 8 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
Configuration requise
| Condition requise | Valeur |
|---|---|
| En-tête | directml.h |