Skip to content
This repository has been archived by the owner on Jan 24, 2024. It is now read-only.

op unittets for top_k/transpose/triangular_solve #1472

Merged
merged 5 commits into from
Jun 1, 2023

Conversation

zzk0
Copy link
Contributor

@zzk0 zzk0 commented May 25, 2023

描述

From #1378

给 top_k/transpose/triangular_solve 算子添加单元测试。

@paddle-bot
Copy link

paddle-bot bot commented May 25, 2023

Thanks for your contribution!

@zzk0
Copy link
Contributor Author

zzk0 commented May 26, 2023

描述

From #1378

topk 算子。

算子类型

  • ElementWise:输入张量索引和输出张量索引之间存在一对一的对应关系
  • Broadcast:输入张量索引和输出张量索引之间存在一对多的对应关系
  • Injective:单射算子,可以将一个输出 axis 映射到一个输入 axis
  • Reduction:输入张量索引和输出张量索引之间存在多对一的对应关系
  • OutFusible:复杂算子,仍然可以将一对一的算子融合到其输出中。
  • kNonFusible:无法融合的算子

Test Cases Checklist

张量维度

  • 1D 张量
  • 2D 张量
  • 3D 张量
  • 4D 张量

special shape

挑选 2D/3D/4D 张量中的一个,测试下面的特殊情况。

  • 其中一个维度为 1
  • 其中一个维度小于 1024
  • 其中一个维度大于 1024
  • 向量的所有维度都是 1

张量数据类型

  • int32
  • int64
  • float32
  • float64

广播

  • 这个算子是否支持广播?
  • 广播的测试样例

算子属性

  • axis: 测试 4-D Tensor,axis 从 0 ~ 3 均进行了测试。
  • k: 在多个 axis 上分别测试超过与不超过对应 axis 数值的 k 值
  • largest:在多个 axis 上分别测试了 True 和 False 两种情况

@zzk0
Copy link
Contributor Author

zzk0 commented May 26, 2023

描述

From #1378

transpose 算子。

算子类型

  • ElementWise:输入张量索引和输出张量索引之间存在一对一的对应关系
  • Broadcast:输入张量索引和输出张量索引之间存在一对多的对应关系
  • Injective:单射算子,可以将一个输出 axis 映射到一个输入 axis
  • Reduction:输入张量索引和输出张量索引之间存在多对一的对应关系
  • OutFusible:复杂算子,仍然可以将一对一的算子融合到其输出中。
  • kNonFusible:无法融合的算子

Test Cases Checklist

张量维度

  • 1D 张量
  • 2D 张量
  • 3D 张量
  • 4D 张量

special shape

挑选 2D/3D/4D 张量中的一个,测试下面的特殊情况。

  • 其中一个维度为 1
  • 其中一个维度小于 1024
  • 其中一个维度大于 1024
  • 向量的所有维度都是 1

张量数据类型

  • bool
  • int32
  • int64
  • float16
  • float32
  • float64

广播

  • 这个算子是否支持广播?
  • 广播的测试样例

算子属性

  • axes: 测试了 1D/2D/3D/4D Tensor 上,axes 只含有正数、含有正负两种情况的配置。

@zzk0
Copy link
Contributor Author

zzk0 commented May 26, 2023

描述

From #1378

triangular_solve 算子。

算子类型

  • ElementWise:输入张量索引和输出张量索引之间存在一对一的对应关系
  • Broadcast:输入张量索引和输出张量索引之间存在一对多的对应关系
  • Injective:单射算子,可以将一个输出 axis 映射到一个输入 axis
  • Reduction:输入张量索引和输出张量索引之间存在多对一的对应关系
  • OutFusible:复杂算子,仍然可以将一对一的算子融合到其输出中。
  • kNonFusible:无法融合的算子

Test Cases Checklist

张量维度

该算子用于求解 AX=B 中的 X,其中 A 是 2D 方阵,B 是 2D 矩阵。

在矩阵 AB 的前面可以添加 batch 维度,这个 batch 维度可以是高维的,和 2D 方阵一起构成高维矩阵。batch 维度不管是多少维的,在后续流程会将其 flatten,变成一个一维的 batch dim。

  • 1D 张量
  • 2D 张量
  • 3D 张量
  • 4D 张量

special shape

挑选 2D/3D/4D 张量中的一个,测试下面的特殊情况。

  • 其中一个维度为 1
  • 其中一个维度小于 1024
  • 其中一个维度大于 1024
  • 向量的所有维度都是 1

张量数据类型

  • int32
  • int64
  • float32
  • float64

广播

  • 这个算子是否支持广播?
  • 广播的测试样例

算子属性

  • left_side:测试 XA=B 的情况
  • upper:保持其他选项不变,测试了 True 和 False 两种情况。
  • transpose_a:保持其他选项不变,测试了 True 和 False 两种情况。
  • unit_diagnoal:保持其他选项不变,测试了 True 和 False 两种情况。

备注

  • 对于维度超过 1024 的情况,测试未通过;因为 np.close 无法判断两个大数值是否相近。
  • 对于 A 是 singular 矩阵的情况,单测中有相应的测试

@zzk0 zzk0 requested a review from thisjiang June 1, 2023 00:39
Copy link
Collaborator

@thisjiang thisjiang left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@thisjiang thisjiang merged commit 977407d into PaddlePaddle:develop Jun 1, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants