mindspore.mint 接口测试
mindspore.mint 接口测试
mindspore.mint.exp
mindspore.mint.expm1
mindspore.mint.fix
mindspore.mint.floor
mindspore.mint.log
环境准备
安装 MindSpore:
1 | $ conda install mindspore=2.4.0 -c mindspore -c conda-forge |
安装 PyTorch:
1 | $ conda install pytorch==2.5.0 torchvision==0.20.0 torchaudio==2.5.0 pytorch-cuda=11.8 -c pytorch -c nvidia |
安装其他依赖:
1 | $ conda install numpy pytest |
Name | Version |
---|---|
python |
3.9.21 |
mindspore |
2.4.0 |
pytorch |
2.5.0 |
torchvision |
0.20.0 |
torchaudio |
2.5.0 |
pytorch-cuda |
11.8 |
numpy |
1.26.4 |
pytest |
7.4.4 |
代码测试
测试要求
按照任务要求,每个接口的测试代码需要放在单独的文件中,文件名为 test_xxx.py
,其中 xxx
是接口名。
测试文件 | 测试功能 |
---|---|
test_exp.py |
测试 mindspore.mint.exp |
test_expm1.py |
测试 mindspore.mint.expm1 |
test_fix.py |
测试 mindspore.mint.fix |
test_floor.py |
测试 mindspore.mint.floor |
test_log.py |
测试 mindspore.mint.log |
每个测试文件需要包含以下测试点:
测试随机输入不同 dtype:
- 生成随机输入数据,测试不同数据类型(如
float32
,float64
)。 - 对比 MindSpore 和 PyTorch 的输出。
测试固定 dtype,随机输入值:
- 固定数据类型,生成随机输入数据。
- 对比 MindSpore 和 PyTorch 的输出。
测试固定 shape,固定输入值,不同输入参数:
- 测试不同输入参数(如
string
,bool
等)。 - 对比两个框架的支持度。
测试随机混乱输入,报错信息的准确性:
- 测试混乱输入(如
None
,inf
,NaN
等)。 - 检查报错信息是否准确。
测试接口构造函数/神经网络的准确性:
- 在 GitHub 上搜索使用该接口的代码片段或神经网络。
- 固定输入和权重,测试正向推理结果。
- 测试反向传播(梯度计算)。
mindspore.mint.exp
工具函数
create_tensors
:创建 MindSpore 和 PyTorch 的张量,支持指定数据类型。
1 | def create_tensors(input_data, ms_dtype, torch_dtype, requires_grad=False): |
compare_results
:比较 MindSpore 和 PyTorch 的结果,使用np.allclose
检查误差,并输出详细的错误信息。
1 | def compare_results(ms_result, torch_result, atol=1e-3): |
参数化测试
使用 @pytest.mark.parametrize
对测试函数进行参数化,减少重复代码。
测试点覆盖
test_exp_different_dtypes
测试不同数据类型。
test_exp_random_input_fixed_dtype
测试固定数据类型(float32
)下的随机输入,包括不同形状(1D、2D、3D、标量、空张量、包含空维度的张量)。
test_exp_fixed_shape_fixed_input
测试固定输入值和形状,包括正数、负数、零和空输入。
test_exp_chaotic_input
测试混乱输入(None
, inf
, -inf
, NaN
, 非法输入类型、布尔值输入)。
test_exp_forward_backward
测试前向和反向传播,确保梯度计算正确。
mindspore.mint.expm1
mindspore.mint.fix
mindspore.mint.floor
mindspore.mint.log
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 梁嘉嘉!