Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Extrahiert lokale Blöcke aus einem Batcheingabe-Tensor.
Betrachten Sie einen InputTensor mit Shape (N,C,*), wobei * eine beliebige Anzahl räumlicher Dimensionen (<=6) ist. Der Vorgang flacht jeden gleitenden WindowSize'd-Block innerhalb des InputTensor in eine Spalte eines OutputTensor ab. Der OutputTensor ist ein 3D-Tensor, der lokale Blöcke enthält, z. B. Patches von Bildern, von Shape (N,C×∏(WindowSizes),BlockCount), wobei N Batchdimension ist, C×∏(WindowSizes) die Anzahl der Werte in einem Fenster (ein Fenster hat ∏(WindowSizes) räumliche Speicherorte, die jeweils einen C-Kanal-Vektor enthalten), und BlockCount ist die Gesamtanzahl der Blöcke. Die Argumente müssen erfüllen:
BlocksPerDimension[d] = ( SpatialSize[d] + StartPadding[d] + EndPadding[d] - Dilations[d] * (WindowSizes[d] - 1) - 1 ) / stride[d] ) + 1
BlockAnzahl = ∏d BlöckePerDimension[d]
Ort:
- SpatialSize wird durch die räumlichen Dimensionen der Eingabe (*) gebildet.
- <0 = d < DimensionAnzahl
Die Indizierungsausgabe an der letzten Dimension (Spaltendimension) gibt alle Werte innerhalb eines bestimmten Blocks an.
Die Argumente StartPadding, EndPadding, Strides und Dilations geben an, wie die Schiebeblöcke abgerufen werden.
Von Bedeutung
Diese API ist als Teil des eigenständigen redistributable-Pakets von DirectML verfügbar (siehe Microsoft.AI.DirectML , Version 1.15.1 und höher). Siehe auch den DirectML-Versionsverlauf.
Syntax
struct DML_UNFOLD_OPERATOR_DESC
{
const DML_TENSOR_DESC* InputTensor;
const DML_TENSOR_DESC* OutputTensor;
UINT DimensionCount;
_Field_size_(DimensionCount) const UINT* WindowSizes;
_Field_size_(DimensionCount) const UINT* Strides;
_Field_size_(DimensionCount) const UINT* Dilations;
_Field_size_(DimensionCount) const UINT* StartPadding;
_Field_size_(DimensionCount) const UINT* EndPadding;
};
Elemente
InputTensor
Typ: const DML_TENSOR_DESC*
Der Eingabe-Tensor, aus dem gelesen werden soll.
OutputTensor
Typ: const DML_TENSOR_DESC*
Der Ausgabe-Tensor, in den die Ergebnisse geschrieben werden sollen.
DimensionCount
Typ: UINT
Die räumlichen Dimensionen von InputTensor.
DimensionCount muss sich im Bereich [1, 6]befinden.
WindowSizes
Typ: _Field_size_(DimensionCount) const UINT*
Die Größe des gleitenden Fensters.
Strides
Typ: _Field_size_(DimensionCount) const UINT*
Die Stride des gleitenden Fensters (mit Dimensionen WindowSizes) in den räumlichen Eingabedimensionen. Sie sind von den Tensorschritten getrennt, die in DML_TENSOR_DESC enthalten sind. Schrittgröße der extrahierten Patches.
Dilations
Typ: _Field_size_(DimensionCount) const UINT*
Die Dilationen des Gleitfensters (mit Dimensionen WindowSizes) in den räumlichen Eingabedimensionen, indem der Abstand zwischen den Kernelpunkten skaliert wird. Dilationen des extrahierten Patches.
StartPadding
Typ: _Field_size_(DimensionCount) const UINT*
Ein Array, das die Menge der impliziten Nullabstand enthält, die am Anfang jeder räumlichen Dimension von InputTensor angewendet werden soll. Beginnen Sie den Abstand des Quell-Tensors.
EndPadding
Typ: _Field_size_(DimensionCount) const UINT*
Ein Array, das den impliziten Nullabstand enthält, der am Ende jeder räumlichen Dimension von InputTensor angewendet werden soll. Beenden des Abstands des Quell-Tensors.
Beispiele
Beispiel 1.
1-Kanal entfalten.
InputTensor: (Sizes:{1, 1, 5, 5}, DataType:FLOAT32)
[[[[ 0., 1., 2., 3., 4.],
[ 5., 6., 7., 8., 9.],
[10., 11., 12., 13., 14.],
[15., 16., 17., 18., 19.],
[20., 21., 22., 23., 24.]]]]
DimensionCount: 2
WindowSizes: {3, 3}
Strides: {1, 1}
Dilations: {1, 1}
StartPadding: {0, 0}
EndPadding: {0, 0}
OutputTensor: (Sizes:{1, 9, 9}, DataType:FLOAT32)
[[[ 0., 1., 2., 5., 6., 7., 10., 11., 12.],
[ 1., 2., 3., 6., 7., 8., 11., 12., 13.],
[ 2., 3., 4., 7., 8., 9., 12., 13., 14.],
[ 5., 6., 7., 10., 11., 12., 15., 16., 17.],
[ 6., 7., 8., 11., 12., 13., 16., 17., 18.],
[ 7., 8., 9., 12., 13., 14., 17., 18., 19.],
[10., 11., 12., 15., 16., 17., 20., 21., 22.],
[11., 12., 13., 16., 17., 18., 21., 22., 23.],
[12., 13., 14., 17., 18., 19., 22., 23., 24.]]]
Beispiel 2.
1 Kanal, gepolstert gefaltet.
InputTensor: (Sizes:{1, 1, 5, 5}, DataType:FLOAT32)
[[[[ 0., 1., 2., 3., 4.],
[ 5., 6., 7., 8., 9.],
[10., 11., 12., 13., 14.],
[15., 16., 17., 18., 19.],
[20., 21., 22., 23., 24.]]]]
DimensionCount: 2
WindowSizes: {3, 3}
Strides: {1, 1}
Dilations: {1, 1}
StartPadding: {1, 0}
EndPadding: {1, 0}
OutputTensor: (Sizes:{1, 9, 15}, DataType:FLOAT32)
[[[ 0., 0., 0., 0., 1., 2., 5., 6., 7., 10., 11., 12., 15., 16., 17.],
[ 0., 0., 0., 1., 2., 3., 6., 7., 8., 11., 12., 13., 16., 17., 18.],
[ 0., 0., 0., 2., 3., 4., 7., 8., 9., 12., 13., 14., 17., 18., 19.],
[ 0., 1., 2., 5., 6., 7., 10., 11., 12., 15., 16., 17., 20., 21., 22.],
[ 1., 2., 3., 6., 7., 8., 11., 12., 13., 16., 17., 18., 21., 22., 23.],
[ 2., 3., 4., 7., 8., 9., 12., 13., 14., 17., 18., 19., 22., 23., 24.],
[ 5., 6., 7., 10., 11., 12., 15., 16., 17., 20., 21., 22., 0., 0., 0.],
[ 6., 7., 8., 11., 12., 13., 16., 17., 18., 21., 22., 23., 0., 0., 0.],
[ 7., 8., 9., 12., 13., 14., 17., 18., 19., 22., 23., 24., 0., 0., 0.]]]
Verfügbarkeit
Dieser Operator wurde in DML_FEATURE_LEVEL_6_4 eingeführt.
Tensoreinschränkungen
InputTensor und OutputTensor müssen denselben DimensionCount haben.
Tensorunterstützung
| Tensor | Variante | Unterstützte Dimensionsanzahl | Unterstützte Datentypen |
|---|---|---|---|
| InputTensor | Eingabe | 3 bis 8 | |
| AusgangTensor | Ausgabe | 3 bis 8 |
Anforderungen
| Kopfball | directml.h |