GatherElements¶
GatherElements - 13¶
版本¶
域:
main
自版本:
13
函数:
False
支持级别:
SupportType.COMMON
形状推断:
True
此版本的运算符自版本13起可用。
摘要¶
GatherElements接收两个输入data
和indices
,它们具有相同的秩r >= 1,以及一个可选属性axis
,该属性标识data
的一个轴(默认情况下,最外层轴,即轴0)。它是一个索引操作,通过索引输入数据张量中由indices
张量的元素确定的索引位置来生成其输出。其输出形状与indices
的形状相同,并且包含一个值(从data
中收集)以供indices
中的每个元素使用。
例如,在3-D情况下(r = 3),生成的输出由以下等式确定
out[i][j][k] = input[index[i][j][k]][j][k] if axis = 0,
out[i][j][k] = input[i][index[i][j][k]][k] if axis = 1,
out[i][j][k] = input[i][j][index[i][j][k]] if axis = 2,
此运算符也是ScatterElements的反运算。它类似于Torch的gather操作。
示例1
data = [
[1, 2],
[3, 4],
]
indices = [
[0, 0],
[1, 0],
]
axis = 1
output = [
[1, 1],
[4, 3],
]
示例2
data = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
]
indices = [
[1, 2, 0],
[2, 0, 0],
]
axis = 0
output = [
[4, 8, 3],
[7, 2, 3],
]
属性¶
axis - INT(默认为
'0'
)要收集的轴。负值表示从后计数维度。接受的范围是[-r, r-1],其中r = rank(data)。
输入¶
data (异构) - T
秩r >= 1的张量。
indices (异构) - Tind
int32/int64索引张量,与输入具有相同的秩r。所有索引值都应在大小为s的轴上[-s, s-1]范围内。如果任何索引值超出范围,则会发生错误。
输出¶
output (异构) - T
与indices形状相同的张量。
类型约束¶
T in (
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 in (
tensor(int32)
,tensor(int64)
)将索引约束为整数类型
GatherElements - 11¶
版本¶
域:
main
自版本:
11
函数:
False
支持级别:
SupportType.COMMON
形状推断:
True
此版本的运算符自版本11起可用。
摘要¶
GatherElements接收两个输入data
和indices
,它们具有相同的秩r >= 1,以及一个可选属性axis
,该属性标识data
的一个轴(默认情况下,最外层轴,即轴0)。它是一个索引操作,通过索引输入数据张量中由indices
张量的元素确定的索引位置来生成其输出。其输出形状与indices
的形状相同,并且包含一个值(从data
中收集)以供indices
中的每个元素使用。
例如,在3-D情况下(r = 3),生成的输出由以下等式确定
out[i][j][k] = input[index[i][j][k]][j][k] if axis = 0,
out[i][j][k] = input[i][index[i][j][k]][k] if axis = 1,
out[i][j][k] = input[i][j][index[i][j][k]] if axis = 2,
此运算符也是ScatterElements的反运算。它类似于Torch的gather操作。
示例1
data = [
[1, 2],
[3, 4],
]
indices = [
[0, 0],
[1, 0],
]
axis = 1
output = [
[
[1, 1],
[4, 3],
],
]
示例2
data = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
]
indices = [
[1, 2, 0],
[2, 0, 0],
]
axis = 0
output = [
[
[4, 8, 3],
[7, 2, 3],
],
]
属性¶
axis - INT(默认为
'0'
)要收集的轴。负值表示从后计数维度。接受的范围是[-r, r-1],其中r = rank(data)。
输入¶
data (异构) - T
秩r >= 1的张量。
indices (异构) - Tind
int32/int64索引张量,与输入具有相同的秩r。所有索引值都应在大小为s的轴上[-s, s-1]范围内。如果任何索引值超出范围,则会发生错误。
输出¶
output (异构) - T
与indices形状相同的张量。
类型约束¶
T in (
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 in (
tensor(int32)
,tensor(int64)
)将索引约束为整数类型