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.
Kombiniert ein Array von Patches, die aus einem Gleitfenster in einen großen mit Tensor gebildet werden.
Erwägen Sie einen Batcheingabe-Tensor, der lokale Blöcke enthält, z. B. Patches von Bildern, von Shape (N,C×∏(WindowSizes),BlockCount), wobei N batchdimensioniert ist, C×∏(WindowSizes) die Anzahl der Werte innerhalb eines Fensters (ein Fenster hat ∏(WindowSizes) räumliche Speicherorte, die jeweils einen C-kanalierten Vektor enthalten), und BlockCount ist die Gesamtanzahl der Blöcke. Dieser Vorgang kombiniert diese lokalen Blöcke in den großen Ausgabe-Tensor von Shape (N,C,OutputSize[0],OutputSize[1],...), indem die überlappenden Werte addiert werden. 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:
- <0 = d < DimensionAnzahl
Die OutputSize -Größe (die Größe des OutputTensor) beschreibt die räumliche Form des großen enthaltenden Tensors der gleitenden lokalen Blöcke.
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_FOLD_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 = 6 sein <.
WindowSizes
Typ: _Field_size_(DimensionCount) const UINT*
Die Größe des gleitenden Fensters. Größe des extrahierten Patches.
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
Eine 1-Kanal-Faltung.
InputTensor: (Sizes:{1, 9, 4}, 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., 25., 26., 27.],
[28., 29., 30., 31.],
[32., 33., 34., 35.]]]
DimensionCount: 2
WindowSizes: {3, 3}
Strides: {1, 1}
Dilations: {1, 1}
StartPadding: {0, 0}
EndPadding: {0, 0}
OutputTensor: (Sizes:{1, 1, 4, 4}, DataType:FLOAT32)
[[[[ 0., 5., 13., 9.],
[ 14., 38., 54., 32.],
[ 38., 86., 102., 56.],
[ 26., 57., 65., 35.]]]]
Beispiel 2
Eine 1-Kanal-, gepolsterte Faltung.
InputTensor: (Sizes:{1, 9, 8}, 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., 25., 26., 27., 28., 29., 30., 31.],
[32., 33., 34., 35., 36., 37., 38., 39.],
[40., 41., 42., 43., 44., 45., 46., 47.],
[48., 49., 50., 51., 52., 53., 54., 55.],
[56., 57., 58., 59., 60., 61., 62., 63.],
[64., 65., 66., 67., 68., 69., 70., 71.]]]
DimensionCount: 2
WindowSizes: {3, 3}
Strides: {1, 1}
Dilations: {1, 1}
StartPadding: {1, 0}
EndPadding: {1, 0}
OutputTensor: (Sizes:{1, 1, 4, 4}, DataType:FLOAT32)
[[[[ 26., 70., 102., 60.],
[ 78., 183., 231., 129.],
[ 84., 195., 243., 135.],
[ 82., 182., 214., 116.]]]]
Beispiel 3
Eine 2-Kanal-, gepolsterte Faltung.
InputTensor: (Sizes:{1, 18, 8}, 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., 25., 26., 27., 28., 29., 30., 31.],
[ 32., 33., 34., 35., 36., 37., 38., 39.],
[ 40., 41., 42., 43., 44., 45., 46., 47.],
[ 48., 49., 50., 51., 52., 53., 54., 55.],
[ 56., 57., 58., 59., 60., 61., 62., 63.],
[ 64., 65., 66., 67., 68., 69., 70., 71.],
[ 72., 73., 74., 75., 76., 77., 78., 79.],
[ 80., 81., 82., 83., 84., 85., 86., 87.],
[ 88., 89., 90., 91., 92., 93., 94., 95.],
[ 96., 97., 98., 99., 100., 101., 102., 103.],
[104., 105., 106., 107., 108., 109., 110., 111.],
[112., 113., 114., 115., 116., 117., 118., 119.],
[120., 121., 122., 123., 124., 125., 126., 127.],
[128., 129., 130., 131., 132., 133., 134., 135.],
[136., 137., 138., 139., 140., 141., 142., 143.]]]
DimensionCount: 2
WindowSizes: {3, 3}
Strides: {1, 1}
Dilations: {1, 1}
StartPadding: {1, 0}
EndPadding: {1, 0}
OutputTensor: (Sizes:{1, 2, 4, 4}, DataType:FLOAT32)
[[[[ 26., 70., 102., 60.],
[ 78., 183., 231., 129.],
[ 84., 195., 243., 135.],
[ 82., 182., 214., 116.]],
[[170., 358., 390., 204.],
[294., 615., 663., 345.],
[300., 627., 675., 351.],
[226., 470., 502., 260.]]]]
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 |