使用縮放因數計算目的地張量大小,將來源的專案重新取樣至目的地張量。 您可以使用線性或最接近的鄰近插補模式。 運算符支援跨多個維度的插補,而不只是 2D。 因此,您可以保留相同的空間大小,但跨通道或批次插補。 輸入與輸出座標之間的關聯性如下:
OutputTensorX = (InputTensorX + InputPixelOffset) * Scale + OutputPixelOffset
這很重要
此 API 是 DirectML 獨立可轉散發套件的一部分,請參閱 Microsoft.AI.DirectML 1.9 版和更新版本。 另請參閱 DirectML 版本歷程記錄。
語法
struct DML_RESAMPLE2_OPERATOR_DESC
{
const DML_TENSOR_DESC* InputTensor;
const DML_TENSOR_DESC* OutputTensor;
DML_INTERPOLATION_MODE InterpolationMode;
DML_AXIS_DIRECTION RoundingDirection;
UINT DimensionCount;
_Field_size_(DimensionCount) const FLOAT* Scales;
_Field_size_(DimensionCount) const FLOAT* InputPixelOffsets;
_Field_size_(DimensionCount) const FLOAT* OutputPixelOffsets;
};
成員
InputTensor
類型: const DML_TENSOR_DESC*
包含輸入數據的張量。
OutputTensor
類型: const DML_TENSOR_DESC*
要寫入輸出數據的張量。
InterpolationMode
此欄位會決定用來選擇輸出圖元的插補類型。
DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR。 使用 最接近的鄰近 演算法,它會為每個輸出元素選擇最接近對應圖元位移的輸入元素。
DML_INTERPOLATION_MODE_LINEAR。 使用 線性插補 演算法,其會計算每個維度兩個最接近鄰近輸入元素的加權平均值,以計算輸出元素。 重新取樣最多可支援四個維度(四邊線),其中加權平均值會計算每個輸出元素的16個輸入元素總計。
RoundingDirection
將小數座標對應回輸入圖元時,要沿著每個軸四捨五入的方向。 由於雙向內插補插補點反正會插補小數點座標,因此這隻會影響 DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR。
DML_AXIS_DIRECTION_INCREASING。 將小數點座標四捨五入,以增加座標軸值(ceil)。
DML_AXIS_DIRECTION_DECREASING。 將小數點座標四捨五入,以遞減軸值(floor)。
DimensionCount
類型: UINT
Scales、InputPixelOffsets 和 OutputPixelOffsets 陣列中的元素數目。 此值必須符合 InputTensor 和 OutputTensor 的維度計數。
Scales
類型:_Field_size_(DimensionCount) const FLOAT*
重新取樣輸入時要套用的縮放比例,其中縮放 > 1 相應增加影像,並將該維度的影像相應縮小 < 1。 請注意,調整不需要完全 OutputSize / InputSize。 如果調整后的輸入大於輸出系結,則我們會將其裁剪為輸出大小。 另一方面,如果縮放后的輸入小於輸出系結,則會限制輸出邊緣。
InputPixelOffsets
類型:_Field_size_(DimensionCount) const FLOAT*
重新取樣之前要套用至輸入圖元的位移。 當此值為 0 時,會使用圖元的左上角,而不是其中心,這通常不會提供預期的結果。 若要使用圖元中心重新取樣影像,並取得與 DML_RESAMPLE_OPERATOR_DESC相同的行為,這個值必須是0.5。
OutputPixelOffsets
類型:_Field_size_(DimensionCount) const FLOAT*
重新取樣之後要套用至輸出圖元的位移。 當此值為 0 時,會使用圖元的左上角,而不是其中心,這通常不會提供預期的結果。 若要使用圖元中心重新取樣影像,並取得與 DML_RESAMPLE_OPERATOR_DESC相同的行為,這個值必須是 -0.5。
備註
當 InterpolationMode 設定為 DML_INTERPOLATION_MODE_LINEAR 時,這個運算子相當於DML_RESAMPLE1_OPERATOR_DESC;或當 InterpolationMode 設定為 DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR,RoundingDirection 設定為 DML_AXIS_DIRECTION_DECREASING,且 OutputPixelOffsets 會調整額外的 -0.5。
可用性
此運算子是在 DML_FEATURE_LEVEL_5_1 中引進的。
Tensor 條件約束
InputTensor 和 OutputTensor 必須具有相同 的 DataType 和 DimensionCount。
Tensor 支援
DML_FEATURE_LEVEL_6_2和更新版本
| 張量 | 仁慈 (if context refers to kindness) | 支援的維度計數 | 支援的數據類型 |
|---|---|---|---|
| InputTensor 的 | 輸入 | 1 到 4 | FLOAT32、FLOAT16、INT8、UINT8 |
| OutputTensor | 輸出 | 1 到 4 | FLOAT32、FLOAT16、INT8、UINT8 |
DML_FEATURE_LEVEL_5_1和更新版本
| 張量 | 仁慈 (if context refers to kindness) | 支援的維度計數 | 支援的數據類型 |
|---|---|---|---|
| InputTensor 的 | 輸入 | 1 到 4 | FLOAT32,FLOAT16 |
| OutputTensor | 輸出 | 1 到 4 | FLOAT32,FLOAT16 |
需求
| 頁眉 | directml.h |