Page 119 - 《软件学报》2026年第2期
P. 119

598                                                        软件学报  2026  年第  37  卷第  2  期


                 在将随机种子设置为相同值之后, 随机生成相同的张量元组并输入模型, 3                       种框架间互相迁移的        MAE  和  MSE  分
                 别如表   11  所示. 由于将源框架下的模型代码迁移到目标框架下再进行回译的过程中会遇到某些算子的参数不是
                 完全一一对应的关系, 例如        PyTorch  与  PaddlePaddle 框架下的模型代码在互相迁移的过程中会存在参数用法不一
                 致、参数缺失等问题, PyTorch      的若干算子拥有的      inplace 参数在  PaddlePaddle 对应的算子下却没有相应的映射参
                 数, 因此可能会对输出结果存在影响, PaddlePaddle 官网也提到这一差异可能会对网络训练结果产生影响, 所以会
                 导致输出张量与输入张量不一致的差异.
                    同时, 本文将迁移程序分别与         MindConverter 以及 PaConvert 工具在上述数据集中进行对比, 对比结果如表           12
                 所示. 可以看到, 在将     PyTorch  框架下的模型代码迁移至       PaddlePaddle 框架下的评价指标下, 本文方法的        MAE  略
                 高于  PaConvert, 但是  MSE  值低于  PaConvert; 在将  PyTorch  框架下的模型代码迁移至  MindSpore 框架下的评价指
                 标下, 本文方法的     MAE  和  MSE  值均低于  MindConverter. 此外, MindConverter 工具只能将 PyTorch 框架下的模型
                 设计代码单向迁移至        MindSpore  框架下, 而既不支持反向迁移, 也不支持与             PaddlePaddle  之间的互相迁移;
                 PaConvert 同样只能将  PyTorch 框架下的模型代码单向迁移至          PaddlePaddle 框架下, 而既不支持反向迁移, 也不支
                 持与  MindConverter 之间的互相迁移, 无法形成互联互通的良好态势. 最后, 本文针对单语语料库以及并行语料库
                 的结果进行了区分, 结果如表         13  所示, 可以看到在单语语料库上, 由于在同一框架下模型的一致性较高, 所以结果
                 的  MAE  和  MSE  值均相对较小.

                            表 11 模型功能测试结果                             表 12 模型功能测试的对比结果

                                        目标框架                                           框架
                    源框架                                           方法
                              PyTorch  PaddlePaddle  MindSpore           PyTorch→PaddlePaddle PyTorch→MindSpore
                                       MAE: 0.152  MAE: 0.143                                MAE: 0.149
                   PyTorch      -                             MindConverter   不支持
                                       MSE: 0.085  MSE: 0.079                                MSE: 0.081
                             MAE: 0.182           MAE: 0.186                 MAE: 0.096
                  PaddlePaddle            -                     PaConvert                     不支持
                             MSE: 0.144           MSE: 0.148                 MSE: 0.091
                             MAE: 0.091  MAE: 0.095                          MAE: 0.152      MAE: 0.143
                   MindSpore                         -          本文方法
                             MSE: 0.089  MSE: 0.093                          MSE: 0.085      MSE: 0.079

                                         表 13 模型功能测试在不同语料库上的对比结果

                                    语料库                      MAE                   MSE
                                  并行语料库                     0.185                  0.137
                                  单语语料库                     0.143                  0.082

                    综上, 通过模型功能测试的实验结果和对比结果, 我们发现本文的迁移程序达到了较低的                             MAE  和  MSE, 并且
                 结果向量之间的总体差异较小, 验证了本文方法的功能正确性.
                  5.4   模型精度测试
                    更进一步的, 本文将对若干经典论文中提出的模型进行迁移, 并对迁移前后的神经网络模型代码进行深度学
                 习训练, 通过对比迁移前后模型在数据集上的精度差异来进一步验证转换的有效性. 其中, ResNet50                           [10] 、Mobile-
                 NetV2 [11] 、DenseNet121 [12] 、ViT [13] 、ShuffleNet V2 [14] 、HarDNet [15] 、EfficientNet [16] 和  Gather-excite [17] 属于分类模
                 型, U-Net [18] 和  PSPNet_ResNet50 [19] 属于分割模型. 本文采用  CIFAR10  作为数据集, 该数据集由  60 000  张  32×32  彩
                 色图片组成, 总共有     10 个类别, 每类   6 000 张图片, 有  50 000 个训练样本和  10 000 个测试样本, 10 个类别包含飞机、
                 汽车、鸟类、猫、鹿、狗、青蛙、马、船和卡车.
                    表  14  列出了官方  PyTorch  版本的各模型代码和转换后得到的           PaddlePaddle 以及  MindSpore 版本的模型代码
                 在训练后进行测试的精度对比. 可以看到, 迁移前后的精度非常接近, 无较大差异. 因此, 可以验证在本文自动迁移
                 技术的转换下, 转换前的模型代码与转换后的模型代码在精度上无明显损失.
   114   115   116   117   118   119   120   121   122   123   124