当前位置: 首页 > 工具软件 > X2Paddle > 使用案例 >

PyTorch与Paddle映射表

谢涵煦
2023-12-01

本文档基于X2Paddle研发过程梳理了 PyTorch(v1.8.1)常用 API 与 PaddlePaddle 2.0.0 API 对应关系与差异分析。通过本文档,帮助开发者快速迁移 PyTorch 使用经验,完成模型的开发与调优。

X2Paddle 介绍

X2Paddle 致力于帮助其它主流深度学习框架开发者快速迁移至飞桨框架,目前提供三大功能

  • 预测模型转换

    • 支持 Caffe/TensorFlow/ONNX/PyTorch 的模型一键转为飞桨的预测模型,并使用 PaddleInference/PaddleLite 进行 CPU/GPU/Arm 等设备的部署

  • PyTorch 训练项目转换

    • 支持 PyTorch 项目 Python 代码(包括训练、预测)一键转为基于飞桨框架的项目代码,帮助开发者快速迁移项目,并可享受 AI Studio 平台对于飞桨框架提供的海量免费计算资源

  • API 映射文档

    • 详细的 API 文档对比分析,帮助开发者快速从 PyTorch 框架的使用迁移至飞桨框架的使用,大大降低学习成本

详细的项目信息与使用方法参考 X2Paddle 在 GitHub 上的开源项目: https://github.com/PaddlePaddle/X2Paddle

API 映射表目录

类别简介
基础操作类主要为torch.XX类 API
组网类主要为torch.nn.XX类下组网相关的 API
Loss 类主要为torch.nn.XX类下 loss 相关的 API
工具类主要为torch.nn.XX类下分布式相关的 API 和torch.utils.XX类 API
视觉类主要为torchvision.XX类 API

基础操作类 API 映射列表

梳理了基础操作的 PyTorch-PaddlePaddle API 映射列表,主要包括了构造 Tensor、数学计算、逻辑计算相关的 API。

PyTorch APIPaddlePaddle API备注
1torch.set_default_dtypepaddle.set_default_dtype功能一致
2torch.get_default_dtypepaddle.get_default_dtype功能一致
3torch.numelpaddle.numel功能一致,参数名不一致
4torch.tensorpaddle.to_tensor差异对比
5torch.from_numpypaddle.to_tensor差异对比
6torch.zerospaddle.zeros差异对比
7torch.zeros_likepaddle.zeros_like差异对比
8torch.onespaddle.ones差异对比
9torch.ones_likepaddle.ones_like差异对比
10torch.emptypaddle.empty差异对比
11torch.empty_likepaddle.empty_like差异对比
12torch.fullpaddle.full功能一致,参数不一致
13torch.full_likepaddle.full_like差异对比
14torch.arangepaddle.arange功能一致,参数不一致
15torch.rangepaddle.arange功能一致,参数不一致
16torch.linspacepaddle.linspace功能一致,参数不一致
17torch.eyepaddle.eye功能一致,参数不一致
18torch.catpaddle.concat功能一致,参数名不一致
19torch.chunkpaddle.chunk功能一致,参数名不一致
20torch.gatherpaddle.gather差异对比
21torch.index_selectpaddle.index_select功能一致,参数名不一致
22torch.masked_selectpaddle.masked_select功能一致,参数名不一致
23torch.narrowpaddle.slice差异对比
24torch.nonzeropaddle.nonzero功能一致,参数名不一致
25torch.reshapepaddle.reshape功能一致,参数名不一致
26torch.splitpaddle.split功能一致,参数名不一致
27torch.squeezepaddle.squeeze功能一致,参数名不一致
28torch.stackpaddle.stack功能一致,参数名不一致
29torch.tpaddle.t功能一致,参数名不一致
30torch.transposepaddle.transpose差异对比
31torch.unbindpaddle.unbind功能一致,参数名不一致
32torch.unsqueezepaddle.unsqueeze功能一致,参数名不一致
33torch.wherepaddle.where功能一致
34torch.bernoullipaddle.bernoulli功能一致,参数不一致
35torch.multinomialpaddle.multinomial功能一致,参数不一致
36torch.normalpaddle.normal差异对比
37torch.randpaddle.rand差异对比
38torch.randintpaddle.randint功能一致,参数不一致
39torch.randnpaddle.randn差异对比
40torch.randpermpaddle.randperm功能一致,参数不一致
41torch.savepaddle.save差异对比
42torch.loadpaddle.load差异对比
43torch.abspaddle.abs功能一致,PaddlePaddle 未定义out参数代表输出 Tensor
44torch.absolutepaddle.abs功能一致,PaddlePaddle 未定义out参数代表输出 Tensor
45torch.acospaddle.acos功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
46torch.arccospaddle.acos功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
47torch.addpadle.add功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
48torch.asinpaddle.asin功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
49torch.arcsinpaddle.asin功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
50torch.atanpaddle.atan功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
51torch.arctanpaddle.atan功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
52torch.ceilpaddle.ceil功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
53torch.clamppaddle.clip功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
54torch.conjpaddle.conj功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
55torch.cospaddle.cos功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
56torch.coshpaddle.cosh功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
57torch.divpaddle.divide差异对比
58torch.dividepaddle.divide差异对比
59torch.erfpaddle.erf功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
60torch.exppaddle.exp功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
61torch.floorpaddle.floor功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
62torch.floor_dividepaddle.floor_divide功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
63torch.fmodpaddle.mod功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
64torch.logpaddle.log功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
65torch.log10paddle.log10功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
66torch.log1ppaddle.log1p功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
67torch.log2paddle.log2功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
68torch.logical_andpaddle.logical_and功能一致,参数名不一致
69torch.logical_notpaddle.logical_not功能一致,参数名不一致
70torch.logical_orpaddle.logical_or功能一致,参数名不一致
71torch.logical_xorpaddle.logical_xor功能一致,参数名不一致
72torch.mulpaddle.multiply功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
73torch.multiplypaddle.multiply功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
74torch.powpaddle.pow功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
75torch.realpaddle.real功能一致,参数名不一致
76torch.reciprocalpaddle.reciprocal功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
77torch.remainderpaddle.mod功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
78torch.roundpaddle.round功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
79torch.rsqrtpaddle.rsqrt功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
80torch.signpaddle.sign功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
81torch.sinpaddle.sin功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
82torch.sinhpaddle.sinh功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
83torch.sqrtpaddle.sqrt功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
84torch.argmaxpaddle.argmax功能一致,参数名不一致
85torch.argminpaddle.argmin功能一致,参数名不一致
86torch.maxpaddle.max功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor
87torch.minpaddle.min功能一致,参数名不一致,PaddlePaddle 未定义out参数代表输出 Tensor

组网类 API 映射列表

梳理了与构造网络相关的 PyTorch-PaddlePaddle API 映射列表。

序号PyTorch APIPaddlePaddle API备注
1torch.nn.Conv1dpaddle.nn.Conv1D差异对比
2torch.nn.Conv2dpaddle.nn.Conv2D差异对比
3torch.nn.Conv3dpaddle.nn.Conv3D差异对比
4torch.nn.ConvTranspose1dpaddle.nn.Conv1DTranspose差异对比
5torch.nn.ConvTranspose2dpaddle.nn.Conv2DTranspose差异对比
6torch.nn.ConvTranspose3dpaddle.nn.Conv3DTranspose差异对比
7torch.nn.Linearpaddle.nn.Linear差异对比
8torch.nn.MaxPool1dpaddle.nn.MaxPool1D差异对比
9torch.nn.MaxPool2dpaddle.nn.MaxPool2D差异对比
10torch.nn.MaxPool3dpaddle.nn.MaxPool3D差异对比
11torch.nn.MaxUnpool1d无对应实现组合实现
12torch.nn.MaxUnpool2d无对应实现组合实现
13torch.nn.MaxUnpool3d无对应实现组合实现
14torch.nn.AvgPool1dpaddle.nn.AvgPool1D差异对比
15torch.nn.AvgPool2dpaddle.nn.AvgPool2D差异对比
16torch.nn.AvgPool3dpaddle.nn.AvgPool3D差异对比
17torch.nn.AdaptiveMaxPool1dpaddle.nn.AdaptiveMaxPool1D功能一致,参数名不一致
18torch.nn.AdaptiveMaxPool2dpaddle.nn.AdaptiveMaxPool2D功能一致,参数名不一致
19torch.nn.AdaptiveMaxPool3dpaddle.nn.AdaptiveMaxPool3D功能一致,参数名不一致
20torch.nn.AdaptiveAvgPool1dpaddle.nn.AdaptiveAvgPool1D功能一致,参数名不一致
21torch.nn.AdaptiveAvgPool2dpaddle.nn.AdaptiveAvgPool2D功能一致,参数名不一致
22torch.nn.AdaptiveAvgPool3dpaddle.nn.AdaptiveAvgPool3D功能一致,参数名不一致
23torch.nn.ConstantPad1dpaddle.nn.Pad1D差异对比
24torch.nn.ConstantPad2dpaddle.nn.Pad2D差异对比
25torch.nn.ConstantPad3dpaddle.nn.Pad3D差异对比
26torch.nn.ReflectionPad1dpaddle.nn.Pad1D差异对比
27torch.nn.ReflectionPad2dpaddle.nn.Pad2D差异对比
28torch.nn.ReplicationPad1dpaddle.nn.Pad1D差异对比
29torch.nn.ReplicationPad2dpaddle.nn.Pad2D差异对比
30torch.nn.ReplicationPad3dpaddle.nn.Pad3D差异对比
31torch.nn.BatchNorm1dpaddle.nn.BatchNorm1D差异对比
32torch.nn.BatchNorm2dpaddle.nn.BatchNorm2D差异对比
33torch.nn.BatchNorm3dpaddle.nn.BatchNorm3D差异对比
34torch.nn.Upsamplepaddle.nn.Upsample差异对比
35torch.nn.Dropoutpaddle.nn.Dropout差异对比
36torch.nn.Dropout2dpaddle.nn.Dropout2D差异对比
37torch.nn.Dropout3dpaddle.nn.Dropout3D差异对比
38torch.nn.LSTMpaddle.nn.LSTM差异对比
39torch.nn.GRUpaddle.nn.GRU差异对比
40torch.nn.Embeddingpaddle.nn.Embedding差异对比
41torch.nn.ELUpaddle.nn.ELU功能一致,PaddlePaddle 未定义inplace参数表示在不更改变量的内存地址的情况下,直接修改变量的值
42torch.nn.Hardsigmoidpaddle.nn.Hardsigmoid功能一致,PaddlePaddle 未定义inplace参数表示在不更改变量的内存地址的情况下,直接修改变量的值
43torch.nn.LeakyReLUpaddle.nn.LeakyReLU功能一致,PaddlePaddle 未定义inplace参数表示在不更改变量的内存地址的情况下,直接修改变量的值
44torch.nn.PReLUpaddle.nn.PReLU功能一致
45torch.nn.ReLUpaddle.nn.ReLU功能一致,PaddlePaddle 未定义inplace参数表示在不更改变量的内存地址的情况下,直接修改变量的值
46torch.nn.Softmaxpaddle.nn.Softmax功能一致,参数名不一致

Loss 类 API 映射列表

梳理了计算 loss 相关的 PyTorch-PaddlePaddle API 映射列表。

序号PyTorch APIPaddlePaddle API备注
1torch.nn.L1Losspaddle.nn.L1Loss功能一致,PyTorch 存在废弃参数size_averagereduce
2torch.nn.MSELosspaddle.nn.MSELoss功能一致,PyTorch 存在废弃参数size_averagereduce
3torch.nn.CrossEntropyLosspaddle.nn.CrossEntropyLoss差异对比
4torch.nn.KLDivLosspaddle.nn.KLDivLoss差异对比
5torch.nn.BCELosspaddle.nn.BCELoss功能一致,PyTorch 存在废弃参数size_averagereduce
6torch.nn.BCEWithLogitsLosspaddle.nn.BCEWithLogitsLoss功能一致,PyTorch 存在废弃参数size_averagereduce
7torch.nn.SmoothL1Losspaddle.nn.SmoothL1Loss功能一致,参数名不一致,PyTorch 存在废弃参数size_averagereduce

工具类 API 映射列表

梳理了与数据处理、分布式处理等相关的 PyTorch-PaddlePaddle API 映射列表。 

PyTorch APIPaddlePaddle API备注
1torch.nn.DataParallelpaddle.DataParallel差异对比
2torch.nn.parameter.Parameterpaddle.create_parameter差异对比
3torch.nn.utils.clip_grad_value_无对应实现组合实现
4torch.utils.data.DataLoaderpaddle.io.DataLoader差异对比
5torch.utils.data.random_split无对应实现组合实现
6torch.utils.data.distributed.DistributedSampler无对应实现组合实现
7torch.utils.data.Datasetpaddle.io.Dataset功能一致
8torch.utils.data.BatchSamplerpaddle.io.BatchSampler差异对比
9torch.utils.data.Samplerpaddle.io.Sampler功能一致

视觉类 API 映射列表 

梳理了与视觉处理相关的 PyTorch-PaddlePaddle API 映射列表

序号PyTorch APIPaddlePaddle API备注
1torchvision.transforms.Composepaddle.vision.transforms.Compose功能一致
2torchvision.transforms.ToPILImage无对应实现组合实现
3torchvision.transforms.Resizepaddle.vision.transforms.Resize功能一致
4torchvision.transforms.ToTensorpaddle.vision.transforms.ToTensor功能一致
5torchvision.transforms.RandomHorizontalFlippaddle.vision.transforms.RandomHorizontalFlip功能一致
6torchvision.transforms.CenterCroppaddle.vision.transforms.CenterCrop功能一致
7torchvision.transforms.ColorJitterpaddle.vision.transforms.ColorJitter功能一致
8torchvision.transforms.Grayscalepaddle.vision.transforms.Grayscale功能一致
9torchvision.transforms.Normalizepaddle.vision.transforms.Normalize差异对比
10torchvision.transforms.RandomResizedCroppaddle.vision.transforms.RandomResizedCrop功能一致
11torchvision.transforms.Padpaddle.vision.transforms.Pad功能一致
12torchvision.transforms.RandomCroppaddle.vision.transforms.RandomCrop功能一致
13torchvision.transforms.RandomRotationpaddle.vision.transforms.RandomRotation功能一致
14torchvision.transforms.RandomVerticalFlippaddle.vision.transforms.RandomVerticalFlip功能一致
15torchvision.transforms.Lambda无对应实现组合实现
17torchvision.utils.save_image无对应实现组合实现
18torchvision.models 系列模型X2Paddle 提供

 

 类似资料: