Gather¶
Gather - 13¶
版本¶
名称: Gather (GitHub)
域:
main起始版本:
13函数:
False支持级别:
SupportType.COMMON形状推断:
True
此版本的运算符自 版本 13 起可用。
摘要¶
给定秩 r >= 1 的 data 张量和秩 q 的 indices 张量,沿 data 的轴维度(默认最外层为 axis=0)收集由 indices 索引的条目,并将它们连接成一个秩为 q + (r - 1) 的输出张量。
它是一个索引操作,沿单个(指定)轴对输入 data 进行索引。indices 中的每个条目生成输入张量的 r-1 维切片。整个操作在概念上生成一个 q 维的 r-1 维切片张量,该张量被排列成一个 q + (r-1) 维张量,其中 q 维度取代了被索引的原始 axis。
以下几个示例说明了 Gather 如何针对 data、indices 的特定形状和给定的 axis 值工作
数据形状 |
索引形状 |
轴 |
输出形状 |
输出方程 |
|---|---|---|---|---|
(P, Q) |
( ) (一个标量) |
0 |
(Q) |
output[q] = data[indices, q] |
(P, Q, R) |
( ) (一个标量) |
1 |
(P, R) |
output[p, r] = data[p, indices, r] |
(P, Q) |
(R, S) |
0 |
(R, S, Q) |
output[r, s, q] = data[ [indices[r, s], q] |
(P, Q) |
(R, S) |
1 |
(P, R, S) |
output[p, r, s] = data[ p, indices[r, s]] |
更一般地,如果 axis = 0,令 k = indices[i_{0}, ..., i_{q-1}] 则 output[i_{0}, ..., i_{q-1}, j_{0}, ..., j_{r-2}] = input[k , j_{0}, ..., j_{r-2}]
data = [
[1.0, 1.2],
[2.3, 3.4],
[4.5, 5.7],
]
indices = [
[0, 1],
[1, 2],
]
output = [
[
[1.0, 1.2],
[2.3, 3.4],
],
[
[2.3, 3.4],
[4.5, 5.7],
],
]
如果 axis = 1,令 k = indices[i_{0}, ..., i_{q-1}] 则 output[j_{0}, i_{0}, ..., i_{q-1}, j_{1}, ..., j_{r-2}] = input[j_{0}, k, j_{1}, ..., j_{r-2}]
data = [
[1.0, 1.2, 1.9],
[2.3, 3.4, 3.9],
[4.5, 5.7, 5.9],
]
indices = [
[0, 2],
]
axis = 1,
output = [
[[1.0, 1.9]],
[[2.3, 3.9]],
[[4.5, 5.9]],
]
属性¶
axis - INT (默认值为
'0')要聚集的轴。负值表示从后往前计数维度。接受的范围是 [-r, r-1],其中 r = rank(data)。
输入¶
data (异构) - T
秩 r >= 1 的张量。
索引 (异构) - Tind
任何秩 q 的 int32/int64 索引张量。所有索引值都应在大小为 s 的轴的界限 [-s, s-1] 内。如果任何索引值超出界限,则会出错。
输出¶
输出 (异构) - T
秩为 q + (r - 1) 的张量。
类型约束¶
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))将索引限制为整数类型
Gather - 11¶
版本¶
名称: Gather (GitHub)
域:
main起始版本:
11函数:
False支持级别:
SupportType.COMMON形状推断:
True
此版本的运算符自 版本 11 起可用。
摘要¶
给定秩 r >= 1 的 data 张量和秩 q 的 indices 张量,沿 data 的轴维度(默认最外层为 axis=0)收集由 indices 索引的条目,并将它们连接成一个秩为 q + (r - 1) 的输出张量。
axis = 0
令 k = indices[i_{0}, …, i_{q-1}] 则 output[i_{0}, …, i_{q-1}, j_{0}, …, j_{r-2}] = input[k , j_{0}, …, j_{r-2}]
data = [
[1.0, 1.2],
[2.3, 3.4],
[4.5, 5.7],
]
indices = [
[0, 1],
[1, 2],
]
output = [
[
[1.0, 1.2],
[2.3, 3.4],
],
[
[2.3, 3.4],
[4.5, 5.7],
],
]
axis = 1
令 k = indices[i_{0}, …, i_{q-1}] 则 output[j_{0}, i_{0}, …, i_{q-1}, j_{1}, …, j_{r-2}] = input[j_{0}, k, j_{1}, …, j_{r-2}]
data = [
[1.0, 1.2, 1.9],
[2.3, 3.4, 3.9],
[4.5, 5.7, 5.9],
]
indices = [
[0, 2],
]
axis = 1,
output = [
[[1.0, 1.9]],
[[2.3, 3.9]],
[[4.5, 5.9]],
]
属性¶
axis - INT (默认值为
'0')要聚集的轴。负值表示从后往前计数维度。接受的范围是 [-r, r-1],其中 r = rank(data)。
输入¶
data (异构) - T
秩 r >= 1 的张量。
索引 (异构) - Tind
任何秩 q 的 int32/int64 索引张量。所有索引值都应在大小为 s 的轴的界限 [-s, s-1] 内。如果任何索引值超出界限,则会出错。
输出¶
输出 (异构) - T
秩为 q + (r - 1) 的张量。
类型约束¶
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))将索引限制为整数类型
Gather - 1¶
版本¶
名称: Gather (GitHub)
域:
main起始版本:
1函数:
False支持级别:
SupportType.COMMON形状推断:
True
此版本的运算符自 版本 1 起可用。
摘要¶
给定秩 r >= 1 的 data 张量和秩 q 的 indices 张量,沿 data 的轴维度(默认最外层为 axis=0)收集由 indices 索引的条目,并将它们连接成一个秩为 q + (r - 1) 的输出张量。示例 1
data = [
[1.0, 1.2],
[2.3, 3.4],
[4.5, 5.7],
]
indices = [
[0, 1],
[1, 2],
]
output = [
[
[1.0, 1.2],
[2.3, 3.4],
],
[
[2.3, 3.4],
[4.5, 5.7],
],
]
示例 2
data = [
[1.0, 1.2, 1.9],
[2.3, 3.4, 3.9],
[4.5, 5.7, 5.9],
]
indices = [
[0, 2],
]
axis = 1,
output = [
[[1.0, 1.9]],
[[2.3, 3.9]],
[[4.5, 5.9]],
]
属性¶
axis - INT (默认值为
'0')要聚集的轴。负值表示从后往前计数维度。接受的范围是 [-r, r-1]
输入¶
data (异构) - T
秩 r >= 1 的张量。
索引 (异构) - Tind
任何秩 q 的 int32/int64 索引张量。所有索引值都应在界限内。如果任何索引值超出界限,则会出错。
输出¶
输出 (异构) - T
秩为 q + (r - 1) 的张量。
类型约束¶
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))将索引限制为整数类型