切片¶
切片 - 13¶
版本¶
網域:
main
since_version:
13
函式:
False
支援層級:
SupportType.COMMON
形狀推論:
True
此版本的運算子自版本 13 起可用。
摘要¶
沿著多個軸產生輸入張量的切片。與 numpy 類似:https://numpy.dev.org.tw/doc/stable/user/basics.indexing.html?highlight=slice#slicing-and-striding
切片使用 starts
、ends
、axes
和 steps
輸入來選取其輸入 data
張量的子張量。
必須為每個 i
計算有效的 starts[i]
、ends[i]
和 steps[i]
,其中 i
在 [0, ... r-1]
中,其中 r = rank(input)
如下
如果省略 axes
,則將其設為 [0, ..., r-1]
。如果省略 steps
,則將其設為長度為 len(starts)
的 [1, ..., 1]
有效值初始化為 start[i] = 0
,ends[i] = dims[i]
,其中 dims
是 input
的維度,且 steps[i] = 1
。
axes
的所有負數元素都會透過將 r
加到其中而變成非負數,其中 r =rank(input)
。
starts[i]
和 ends[i]
中的所有負值都會將 dims[axes[i]]
加到其中,其中 dims
是 input
的維度。然後,start[axes[i]]
是調整後的 starts[i]
,其被鉗制在 [0, dims[axes[i]]]
範圍內以進行正向步進,並鉗制在 [0, dims[axes[i]]-1]
範圍內以進行負向步進。
調整後的 ends[i]
的鉗制取決於 steps[i]
的正負號,且必須容納複製 0 到 dims[axes[i]]
個元素,因此對於正向步進,ends[axes[i]]
會鉗制在 [0, dims[axes[i]]]
,而對於負向步進,則會鉗制在 [-1, dims[axes[i]]-1]
。
最後,steps[axes[i]] = steps[i]
。
若要切片至大小未知的維度末端,建議在正向切片時傳入 INT_MAX
,而在反向切片時傳入 'INT_MIN'。
範例 1
data = [
[1, 2, 3, 4],
[5, 6, 7, 8],
]
axes = [0, 1]
starts = [1, 0]
ends = [2, 3]
steps = [1, 2]
result = [
[5, 7],
]
範例 2
data = [
[1, 2, 3, 4],
[5, 6, 7, 8],
]
starts = [0, 1]
ends = [-1, 1000]
result = [
[2, 3, 4],
]
輸入¶
介於 3 到 5 個輸入之間。
data (異質) - T
要從中提取切片的資料張量。
starts (異質) - Tind
在
axes
中對應軸的起始索引的 1 維張量ends (異質) - Tind
在
axes
中對應軸的結束索引 (不包含) 的 1 維張量axes (選用,異質) - Tind
指定
starts
和ends
應用於哪些軸的一維張量。負值表示從後往前計算維度。可接受的範圍為 [-r, r-1],其中 r = data 的秩。如果軸重複,則行為未定義。steps (選用,異質) - Tind
與
axes
中對應軸的切片步長的一維張量。負值表示向後切片。「steps」不能為 0。預設值為 1。
輸出¶
output (異質) - T
切片的資料張量。
類型約束¶
T 屬於 (
tensor(bfloat16)
,tensor(bool)
,tensor(complex128)
,tensor(complex64)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(int16)
,tensor(int32)
,tensor(int64)
,tensor(int8)
,tensor(string)
,tensor(uint16)
,tensor(uint32)
,tensor(uint64)
,tensor(uint8)
)將輸入和輸出類型限制為所有張量類型。
Tind 屬於 (
tensor(int32)
,tensor(int64)
)將索引限制為整數類型。
Slice - 11¶
版本¶
網域:
main
since_version:
11
函式:
False
支援層級:
SupportType.COMMON
形狀推論:
True
此運算符版本自第 11 版起可用。
摘要¶
沿多個軸產生輸入張量的切片。與 numpy 類似:https://numpy.dev.org.tw/doc/stable/reference/routines.indexing.html 切片使用 starts
、ends
、axes
和 steps
輸入來指定軸列表中每個軸的起始和結束維度以及步長,它使用此資訊來切片輸入的 data
張量。如果為任何起始或結束索引傳遞負值,則它表示該維度末尾之前的元素數量。如果傳遞給起始或結束的值大於 n
(此維度中的元素數量),則它表示 n
。對於切片到未知大小的維度末尾,建議在向前切片時傳遞 INT_MAX
,而在向後切片時傳遞 'INT_MIN'。如果為步長傳遞負值,則表示向後切片。但是,步長值不能為 0。如果省略 axes
,則它們會設定為 [0, ..., ndim-1]
。如果省略 steps
,則它們會設定為長度為 len(starts)
的 [1, ..., 1]
。範例 1:data = [ [1, 2, 3, 4], [5, 6, 7, 8], ] axes = [0, 1] starts = [1, 0] ends = [2, 3] steps = [1, 2] result = [ [5, 7], ] 範例 2:data = [ [1, 2, 3, 4], [5, 6, 7, 8], ] starts = [0, 1] ends = [-1, 1000] result = [ [2, 3, 4], ]
輸入¶
介於 3 到 5 個輸入之間。
data (異質) - T
要從中提取切片的資料張量。
starts (異質) - Tind
在
axes
中對應軸的起始索引的 1 維張量ends (異質) - Tind
在
axes
中對應軸的結束索引 (不包含) 的 1 維張量axes (選用,異質) - Tind
指定
starts
和ends
應用於哪些軸的一維張量。負值表示從後往前計算維度。可接受的範圍為 [-r, r-1],其中 r = data 的秩。steps (選用,異質) - Tind
與
axes
中對應軸的切片步長的一維張量。負值表示向後切片。「steps」不能為 0。預設值為 1。
輸出¶
output (異質) - T
切片的資料張量。
類型約束¶
T 屬於 (
tensor(bool)
,tensor(complex128)
,tensor(complex64)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(int16)
,tensor(int32)
,tensor(int64)
,tensor(int8)
,tensor(string)
,tensor(uint16)
,tensor(uint32)
,tensor(uint64)
,tensor(uint8)
)將輸入和輸出類型限制為所有張量類型。
Tind 屬於 (
tensor(int32)
,tensor(int64)
)將索引限制為整數類型。
Slice - 10¶
版本¶
網域:
main
since_version:
10
函式:
False
支援層級:
SupportType.COMMON
形狀推論:
True
此運算符版本自第 10 版起可用。
摘要¶
沿多個軸產生輸入張量的切片。與 numpy 類似:https://numpy.dev.org.tw/doc/stable/reference/routines.indexing.html 切片使用 starts
、ends
、axes
和 steps
輸入來指定軸列表中每個軸的起始和結束維度以及步長,它使用此資訊來切片輸入的 data
張量。如果為任何起始或結束索引傳遞負值,則它表示該維度末尾之前的元素數量。如果傳遞給起始或結束的值大於 n
(此維度中的元素數量),則它表示 n
。對於切片到未知大小的維度末尾,建議傳遞 INT_MAX
。如果為步長傳遞負值,則表示向後切片。如果省略 axes
,則它們會設定為 [0, ..., ndim-1]
。如果省略 steps
,則它們會設定為長度為 len(starts)
的 [1, ..., 1]
。範例 1:data = [ [1, 2, 3, 4], [5, 6, 7, 8], ] axes = [0, 1] starts = [1, 0] ends = [2, 3] steps = [1, 2] result = [ [5, 7], ] 範例 2:data = [ [1, 2, 3, 4], [5, 6, 7, 8], ] starts = [0, 1] ends = [-1, 1000] result = [ [2, 3, 4], ]
輸入¶
介於 3 到 5 個輸入之間。
data (異質) - T
要從中提取切片的資料張量。
starts (異質) - Tind
在
axes
中對應軸的起始索引的 1 維張量ends (異質) - Tind
在
axes
中對應軸的結束索引 (不包含) 的 1 維張量axes (選用,異質) - Tind
指定
starts
和ends
應用於哪些軸的一維張量。steps (選用,異質) - Tind
與
axes
中對應軸的切片步長的一維張量。預設值為 1。
輸出¶
output (異質) - T
切片的資料張量。
類型約束¶
T 屬於 (
tensor(bool)
,tensor(complex128)
,tensor(complex64)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(int16)
,tensor(int32)
,tensor(int64)
,tensor(int8)
,tensor(string)
,tensor(uint16)
,tensor(uint32)
,tensor(uint64)
,tensor(uint8)
)將輸入和輸出類型限制為所有張量類型。
Tind 屬於 (
tensor(int32)
,tensor(int64)
)將索引限制為整數類型。
Slice - 1¶
版本¶
網域:
main
since_version:
1
函式:
False
支援層級:
SupportType.COMMON
形狀推論:
True
此運算符版本自第 1 版起可用。
摘要¶
沿多個軸產生輸入張量的切片。與 numpy 類似:https://numpy.dev.org.tw/doc/stable/reference/routines.indexing.html 切片使用 axes
、starts
和 ends
屬性來指定軸列表中每個軸的起始和結束維度,它使用此資訊來切片輸入的 data
張量。如果為任何起始或結束索引傳遞負值,則它表示該維度末尾之前的元素數量。如果傳遞給起始或結束的值大於 n
(此維度中的元素數量),則它表示 n
。對於切片到未知大小的維度末尾,建議傳遞 INT_MAX
。如果省略 axes
,則它們會設定為 [0, ..., ndim-1]
。範例 1:data = [ [1, 2, 3, 4], [5, 6, 7, 8], ] axes = [0, 1] starts = [1, 0] ends = [2, 3] result = [ [5, 6, 7], ] 範例 2:data = [ [1, 2, 3, 4], [5, 6, 7, 8], ] starts = [0, 1] ends = [-1, 1000] result = [ [2, 3, 4], ]
屬性¶
axes - INTS :
適用於
starts
和ends
的軸。這是選填的。如果沒有提供,將被視為 [0, 1, …, len(starts
) - 1]。ends - INTS (必要)
在 `axes` 中對應軸的結束索引(不包含)。
starts - INTS (必要)
在
axes
中對應軸的起始索引。
輸入¶
data (異質) - T
要從中提取切片的資料張量。
輸出¶
output (異質) - T
切片的資料張量。
類型限制¶
T 屬於 (
tensor(bool)
,tensor(complex128)
,tensor(complex64)
,tensor(double)
,tensor(float)
,tensor(float16)
,tensor(int16)
,tensor(int32)
,tensor(int64)
,tensor(int8)
,tensor(string)
,tensor(uint16)
,tensor(uint32)
,tensor(uint64)
,tensor(uint8)
)將輸入和輸出類型限制為所有張量類型。