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.
Umsortiert (permutiert) Daten aus der Tiefe in Blöcke von räumlichen Daten. Der Operator gibt eine Kopie des Eingabe-Tensors aus, bei dem Werte aus der Tiefendimension in räumlichen Blöcken in die Höhen- und Breitendimensionen verschoben werden.
Dies ist die umgekehrte Transformation von DML_SPACE_TO_DEPTH1_OPERATOR_DESC.
Syntax
struct DML_DEPTH_TO_SPACE1_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputTensor;
UINT BlockSize;
DML_DEPTH_SPACE_ORDER Order;
};
Member
InputTensor
Typ: const DML_TENSOR_DESC*
Der Tensor, aus dem gelesen werden soll. Die Dimensionen des Eingabe tensors sind { BatchCount, InputChannelCount, InputHeight, InputWidth }.
OutputTensor
Typ: const DML_TENSOR_DESC*
Der Tensor, in den die Ergebnisse geschrieben werden sollen. Die Dimensionen des Ausgabe tensors sind { BatchCount, OutputChannelCount, OutputHeight, OutputWidth }, wobei:
- OutputChannelCount wird als InputChannelCount / (
BlockSize*BlockSize) berechnet. - OutputHeight wird als InputHeight * berechnet.
BlockSize - OutputWidth wird als InputWidth * berechnet.
BlockSize
BlockSize
Typ: UINT
Die Breite und Höhe der Blöcke, die verschoben werden.
Order
Siehe DML_DEPTH_SPACE_ORDER.
Beispiele
In den Beispielen in diesem Abschnitt wird die folgende Eingabe verwendet.
InputTensor: (Sizes:{1, 8, 2, 3}, DataType:UINT32)
[[[[0, 1, 2],
[3, 4, 5]],
[[9, 10, 11],
[12, 13, 14]],
[[18, 19, 20],
[21, 22, 23]],
[[27, 28, 29],
[30, 31, 32]],
[[36, 37, 38],
[39, 40, 41]],
[[45, 46, 47],
[48, 49, 50]],
[[54, 55, 56],
[57, 58, 59]],
[[63, 64, 65],
[66, 67, 68]]]]
Beispiel 1: Tiefenspaltenzeilenreihenfolge
BlockSize: 2
Order: DML_DEPTH_SPACE_ORDER_DEPTH_COLUMN_ROW
OutputTensor: (Sizes:{1, 2, 4, 6}, DataType:UINT32)
[[[[ 0, 18, 1, 19, 2, 20],
[36, 54, 37, 55, 38, 56],
[ 3, 21, 4, 22, 5, 23],
[39, 57, 40, 58, 41, 59]],
[[ 9, 27, 10, 28, 11, 29],
[45, 63, 46, 64, 47, 65],
[12, 30, 13, 31, 14, 32],
[48, 66, 49, 67, 50, 68]]]]
Beispiel 2: Spaltenzeilentiefe
BlockSize: 2
Order: DML_DEPTH_SPACE_ORDER_COLUMN_ROW_DEPTH
OutputTensor: (Sizes:{1, 2, 4, 6}, DataType:UINT32)
[[[[ 0, 9, 1, 10, 2, 11],
[18, 27, 19, 28, 20, 29],
[ 3, 12, 4, 13, 5, 14],
[21, 30, 22, 31, 23, 32]],
[[36, 45, 37, 46, 38, 47],
[54, 63, 55, 64, 56, 65],
[39, 48, 40, 49, 41, 50],
[57, 66, 58, 67, 59, 68]]]]
Hinweise
Wenn Order auf DML_DEPTH_SPACE_ORDER_DEPTH_COLUMN_ROW festgelegt ist, entspricht DML_DEPTH_TO_SPACE1_OPERATOR_DESCDML_DEPTH_TO_SPACE_OPERATOR_DESC.
Verfügbarkeit
Dieser Operator wurde in DML_FEATURE_LEVEL_2_1eingeführt.
Tensoreinschränkungen
InputTensor und OutputTensor müssen denselben DataType aufweisen.
Tensorunterstützung
DML_FEATURE_LEVEL_5_0 und höher
| Tensor | Variante | Dimensionen | Unterstützte Dimensionsanzahl | Unterstützte Datentypen |
|---|---|---|---|---|
| InputTensor | Eingabe | { BatchCount, InputChannelCount, InputHeight, InputWidth } | 4 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
| OutputTensor | Ausgabe | { BatchCount, OutputChannelCount, OutputHeight, OutputWidth } | 4 | FLOAT64, FLOAT32, FLOAT16, INT64, INT32, INT16, INT8, UINT64, UINT32, UINT16, UINT8 |
DML_FEATURE_LEVEL_2_1 und höher
| Tensor | Variante | Dimensionen | Unterstützte Dimensionsanzahl | Unterstützte Datentypen |
|---|---|---|---|---|
| InputTensor | Eingabe | { BatchCount, InputChannelCount, InputHeight, InputWidth } | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
| OutputTensor | Ausgabe | { BatchCount, OutputChannelCount, OutputHeight, OutputWidth } | 4 | FLOAT32, FLOAT16, INT32, INT16, INT8, UINT32, UINT16, UINT8 |
Anforderungen
| Anforderung | Wert |
|---|---|
| Unterstützte Mindestversion (Client) | Windows 10 Build 20348 |
| Unterstützte Mindestversion (Server) | Windows 10 Build 20348 |
| Kopfzeile | directml.h |