PyTorch 1.8 与 Paddle 2.0 API映射表

本文档基于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代码(包括训练、预测)一键转为基于飞桨框架的项目代码,帮助开发者快速迁移项目,并可享受AIStudio平台对于飞桨框架提供的海量免费计算资源
  • 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功能一致,PyTroch存在废弃参数size_averagereduce
2torch.nn.MSELosspaddle.nn.MSELoss功能一致,PyTroch存在废弃参数size_averagereduce
3torch.nn.CrossEntropyLosspaddle.nn.CrossEntropyLoss差异对比
4torch.nn.KLDivLosspaddle.nn.KLDivLoss差异对比
5torch.nn.BCELosspaddle.nn.BCELoss功能一致,PyTroch存在废弃参数size_averagereduce
6torch.nn.BCEWithLogitsLosspaddle.nn.BCEWithLogitsLoss功能一致,PyTroch存在废弃参数size_averagereduce
7torch.nn.SmoothL1Losspaddle.nn.SmoothL1Loss功能一致,参数名不一致,PyTroch存在废弃参数size_averagereduce

持续更新…

工具类API映射列表

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

序号PyTorch APIPaddlePaddle API备注
1torch.nn.DataParallelpaddle.DataParallel差异对比
2torch.nn.parameter.Parameterpaddle.createparameter差异对比
3<a href=”https://pytorch.org/docs/stable/generated/torch.nn.utils.clip_grad_value.html?highlight=clipgrad_value#torch.nn.utils.clipgrad_value“>torch.nn.utils.clipgrad_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提供使用方式

持续更新…