SparseReshape
贡献说明
| 贡献者 | 贡献算子 | 贡献时间 | 贡献内容 |
|---|
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | × |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | × |
| Atlas 200I/500 A2 推理产品 | × |
| Atlas 推理系列产品 | × |
| Atlas 训练系列产品 | × |
功能说明
-
算子功能:将稀疏张量(SparseTensor)的indices从输入shape重塑到目标shape。稀疏张量由indices(非零元素坐标)、values(非零元素值)和shape(稠密形状)组成。SparseReshape仅对indices和shape进行重塑,不修改values。
-
计算公式:
flat_id=∑j=0input_rank−1indices[i,j]×input_strides[j]\text{flat\_id} = \sum_{j=0}^{\text{input\_rank}-1} \text{indices}[i, j] \times \text{input\_strides}[j]
y_indices[i,j]=⌊flat_id/output_strides[j]⌋,flat_id=flat_id mod output_strides[j]\text{y\_indices}[i, j] = \lfloor \text{flat\_id} / \text{output\_strides}[j] \rfloor, \quad \text{flat\_id} = \text{flat\_id} \bmod \text{output\_strides}[j]
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| indices | 输入 | 非零元素的多维坐标矩阵,2D张量,shape=(nnz, input_rank)。 | INT32、INT64 | ND |
| shape | 输入 | 原始稠密形状,1D张量,shape=(input_rank,)。 | INT32、INT64 | ND |
| new_shape | 输入 | 目标稠密形状,1D张量,shape=(output_rank,)。允许一个维度为-1,自动推导。 | INT32、INT64 | ND |
| y_indices | 输出 | 重塑后的非零元素坐标矩阵,2D张量,shape=(nnz, output_rank)。 | INT32、INT64 | ND |
| y_shape | 输出 | 重塑后的稠密形状,1D张量,shape=(output_rank,)。 | INT32、INT64 | ND |
约束说明
- 输入indices必须为2D矩阵,shape和new_shape必须为1D向量。
- 输入indices每行是一个非零元素的多维坐标。元素值大于等于0且小于对应shape维度的size。
- input_rank和output_rank均不超过8维(MAX_RANK=8)。
- new_shape中最多允许一个维度为-1,该维度值由总元素数除以其他维度乘积自动推导。
- 输入shape和输出new_shape的总元素数必须一致。
- 所有输入和输出的dtype必须相同(全部int32或全部int64)。
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| 图模式调用 | test_geir_sparse_reshape | 参见算子调用完成算子编译和验证。 |