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 代码(包括训练、预测)一键转为基于飞桨框架的项目代码,帮助开发者快速迁移项目,并可享受 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 API PaddlePaddle API 备注
1 torch.set_default_dtype paddle.set_default_dtype 功能一致,参数一致
2 torch.get_default_dtype paddle.get_default_dtype 功能一致,参数一致
3 torch.numel paddle.numel 功能一致,参数一致
4 torch.tensor paddle.to_tensor 功能一致,torch 参数更多,差异对比
5 torch.from_numpy paddle.to_tensor 功能一致,但两者参数不一致,差异对比
6 torch.zeros paddle.zeros 差异对比
7 torch.zeros_like paddle.zeros_like 功能一致,torch 参数更多,差异对比
8 torch.ones paddle.ones 功能一致,torch 参数更多,差异对比
9 torch.ones_like paddle.ones_like 功能一致,torch 参数更多,差异对比
10 torch.empty paddle.empty 功能一致,torch 参数更多,差异对比
11 torch.empty_like paddle.empty_like 功能一致,torch 参数更多,差异对比
12 torch.full paddle.full 功能一致,torch 参数更多,差异对比
13 torch.full_like paddle.full_like 功能一致,torch 参数更多,差异对比
14 torch.arange paddle.arange 功能一致,torch 参数更多,差异对比
15 torch.range paddle.arange 功能一致,torch 参数更多,差异对比
16 torch.linspace paddle.linspace 功能一致,torch 参数更多,差异对比
17 torch.eye paddle.eye 功能一致,torch 参数更多,差异对比
18 torch.cat paddle.concat 功能一致,参数一致
19 torch.chunk paddle.chunk 功能一致,参数一致
20 torch.gather paddle.gather 功能一致,但两者参数不一致,差异对比
21 torch.index_select paddle.index_select 功能一致,参数一致
22 torch.masked_select paddle.masked_select 功能一致,参数一致
23 torch.narrow paddle.slice 功能一致,两者参数不一致,差异对比
24 torch.nonzero paddle.nonzero 功能一致,参数一致
25 torch.reshape paddle.reshape 功能一致,参数一致
26 torch.split paddle.split 功能一致,参数一致
27 torch.squeeze paddle.squeeze 功能一致,参数一致
28 torch.stack paddle.stack 功能一致,参数一致
29 torch.t paddle.t 功能一致,参数一致
30 torch.transpose paddle.transpose 功能一致,但两者参数不一致,差异对比
31 torch.unbind paddle.unbind 功能一致,参数一致
32 torch.unsqueeze paddle.unsqueeze 功能一致,参数一致
33 torch.where paddle.where 功能一致
34 torch.bernoulli paddle.bernoulli 功能一致,torch 参数更多,差异对比
35 torch.multinomial paddle.multinomial 功能一致,torch 参数更多,差异对比
36 torch.normal paddle.normal 功能一致,torch 参数更多,差异对比
37 torch.rand paddle.rand 功能一致,torch 参数更多,差异对比
38 torch.randint paddle.randint 功能一致,torch 参数更多,差异对比
39 torch.randn paddle.randn 差异对比
40 torch.randperm paddle.randperm 功能一致,torch 参数更多,差异对比
41 torch.save paddle.save 功能一致,torch 参数更多,差异对比
42 torch.load paddle.load 功能一致,torch 参数更多,差异对比
43 torch.abs paddle.abs 功能一致,torch 参数更多,torch 多 out 参数代表输出
44 torch.absolute paddle.abs 功能一致,torch 参数更多,torch 多 out 参数代表输出
45 torch.acos paddle.acos 功能一致,torch 参数更多,torch 多 out 参数代表输出
46 torch.arccos paddle.acos 功能一致,torch 参数更多,torch 多 out 参数代表输出
47 torch.add padle.add 功能一致,torch 参数更多,torch 多 out 参数代表输出
48 torch.asin paddle.asin 功能一致,torch 参数更多,torch 多 out 参数代表输出
49 torch.arcsin paddle.asin 功能一致,torch 参数更多,torch 多 out 参数代表输出
50 torch.atan paddle.atan 功能一致,torch 参数更多,torch 多 out 参数代表输出
51 torch.arctan paddle.atan 功能一致,torch 参数更多,torch 多 out 参数代表输出
52 torch.ceil paddle.ceil 功能一致,torch 参数更多,torch 多 out 参数代表输出
53 torch.clamp paddle.clip 功能一致,torch 参数更多,torch 多 out 参数代表输出
54 torch.conj paddle.conj 功能一致,torch 参数更多,torch 多 out 参数代表输出
55 torch.cos paddle.cos 功能一致,torch 参数更多,torch 多 out 参数代表输出
56 torch.cosh paddle.cosh 功能一致,torch 参数更多,torch 多 out 参数代表输出
57 torch.div paddle.divide 功能一致,torch 参数更多,差异对比
58 torch.divide paddle.divide 功能一致,torch 参数更多,差异对比
59 torch.erf paddle.erf 功能一致,torch 参数更多,torch 多 out 参数代表输出
60 torch.exp paddle.exp 功能一致,torch 参数更多,torch 多 out 参数代表输出
61 torch.floor paddle.floor 功能一致,torch 参数更多,torch 多 out 参数代表输出
62 torch.floor_divide paddle.floor_divide 功能一致,torch 参数更多,torch 多 out 参数代表输出
63 torch.fmod paddle.mod 功能一致,torch 参数更多,torch 多 out 参数代表输出
64 torch.log paddle.log 功能一致,torch 参数更多,torch 多 out 参数代表输出
65 torch.log10 paddle.log10 功能一致,torch 参数更多,torch 多 out 参数代表输出
66 torch.log1p paddle.log1p 功能一致,torch 参数更多,torch 多 out 参数代表输出
67 torch.log2 paddle.log2 功能一致,torch 参数更多,torch 多 out 参数代表输出
68 torch.logical_and paddle.logical_and 功能一致,参数一致
69 torch.logical_not paddle.logical_not 功能一致,参数一致
70 torch.logical_or paddle.logical_or 功能一致,参数一致
71 torch.logical_xor paddle.logical_xor 功能一致,参数一致
72 torch.mul paddle.multiply 功能一致,torch 参数更多,torch 多 out 参数代表输出
73 torch.multiply paddle.multiply 功能一致,torch 参数更多,torch 多 out 参数代表输出
74 torch.pow paddle.pow 功能一致,torch 参数更多,torch 多 out 参数代表输出
75 torch.real paddle.real 功能一致,参数一致
76 torch.reciprocal paddle.reciprocal 功能一致,torch 参数更多,torch 多 out 参数代表输出
77 torch.remainder paddle.mod 功能一致,torch 参数更多,torch 多 out 参数代表输出
78 torch.round paddle.round 功能一致,torch 参数更多,torch 多 out 参数代表输出
79 torch.rsqrt paddle.rsqrt 功能一致,torch 参数更多,torch 多 out 参数代表输出
80 torch.sign paddle.sign 功能一致,torch 参数更多,torch 多 out 参数代表输出
81 torch.sin paddle.sin 功能一致,torch 参数更多,torch 多 out 参数代表输出
82 torch.sinh paddle.sinh 功能一致,torch 参数更多,torch 多 out 参数代表输出
83 torch.sqrt paddle.sqrt 功能一致,torch 参数更多,torch 多 out 参数代表输出
84 torch.argmax paddle.argmax 功能一致,参数一致
85 torch.argmin paddle.argmin 功能一致,参数一致
86 torch.max paddle.max 功能一致,torch 参数更多,torch 多 out 参数代表输出
87 torch.min paddle.min 功能一致,torch 参数更多,torch 多 out 参数代表输出

持续更新...

组网类 API 映射列表

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

序号 PyTorch API PaddlePaddle API 备注
1 torch.nn.Conv1d paddle.nn.Conv1D 功能一致,但两者参数不一致,差异对比
2 torch.nn.Conv2d paddle.nn.Conv2D 功能一致,但两者参数不一致,差异对比
3 torch.nn.Conv3d paddle.nn.Conv3D 功能一致,但两者参数不一致,差异对比
4 torch.nn.ConvTranspose1d paddle.nn.Conv1DTranspose 功能一致,但两者参数不一致,差异对比
5 torch.nn.ConvTranspose2d paddle.nn.Conv2DTranspose 功能一致,但两者参数不一致,差异对比
6 torch.nn.ConvTranspose3d paddle.nn.Conv3DTranspose 功能一致,但两者参数不一致,差异对比
7 torch.nn.Linear paddle.nn.Linear 功能一致,但两者参数不一致,差异对比
8 torch.nn.MaxPool1d paddle.nn.MaxPool1D 功能一致,torch 参数更多,差异对比
9 torch.nn.MaxPool2d paddle.nn.MaxPool2D 功能一致,torch 参数更多,差异对比
10 torch.nn.MaxPool3d paddle.nn.MaxPool3D 功能一致,torch 参数更多,差异对比
11 torch.nn.MaxUnpool1d paddle.nn.MaxUnPool1D 功能一致,参数一致,组合实现
12 torch.nn.MaxUnpool2d paddle.nn.MaxUnPool1D 功能一致,参数一致,组合实现
13 torch.nn.MaxUnpool3d paddle.nn.MaxUnPool1D 功能一致,参数一致,组合实现
14 torch.nn.AvgPool1d paddle.nn.AvgPool1D 功能一致,但两者参数不一致,差异对比
15 torch.nn.AvgPool2d paddle.nn.AvgPool2D 功能一致,但两者参数不一致,差异对比
16 torch.nn.AvgPool3d paddle.nn.AvgPool3D 功能一致,但两者参数不一致,差异对比
17 torch.nn.AdaptiveMaxPool1d paddle.nn.AdaptiveMaxPool1D 功能一致,参数一致
18 torch.nn.AdaptiveMaxPool2d paddle.nn.AdaptiveMaxPool2D 功能一致,参数一致
19 torch.nn.AdaptiveMaxPool3d paddle.nn.AdaptiveMaxPool3D 功能一致,参数一致
20 torch.nn.AdaptiveAvgPool1d paddle.nn.AdaptiveAvgPool1D 功能一致,参数一致
21 torch.nn.AdaptiveAvgPool2d paddle.nn.AdaptiveAvgPool2D 功能一致,参数一致
22 torch.nn.AdaptiveAvgPool3d paddle.nn.AdaptiveAvgPool3D 功能一致,参数一致
23 torch.nn.ConstantPad1d paddle.nn.Pad1D 功能一致,但两者参数不一致,差异对比
24 torch.nn.ConstantPad2d paddle.nn.Pad2D 功能一致,但两者参数不一致,差异对比
25 torch.nn.ConstantPad3d paddle.nn.Pad3D 功能一致,但两者参数不一致,差异对比
26 torch.nn.ReflectionPad1d paddle.nn.Pad1D 功能一致,但两者参数不一致,差异对比
27 torch.nn.ReflectionPad2d paddle.nn.Pad2D 功能一致,但两者参数不一致,差异对比
28 torch.nn.ReplicationPad1d paddle.nn.Pad1D 功能一致,但两者参数不一致,差异对比
29 torch.nn.ReplicationPad2d paddle.nn.Pad2D 功能一致,但两者参数不一致,差异对比
30 torch.nn.ReplicationPad3d paddle.nn.Pad3D 功能一致,但两者参数不一致,差异对比
31 torch.nn.BatchNorm1d paddle.nn.BatchNorm1D 功能一致,但两者参数不一致,差异对比
32 torch.nn.BatchNorm2d paddle.nn.BatchNorm2D 功能一致,但两者参数不一致,差异对比
33 torch.nn.BatchNorm3d paddle.nn.BatchNorm3D 功能一致,但两者参数不一致,差异对比
34 torch.nn.Upsample paddle.nn.Upsample 差异对比
35 torch.nn.Dropout paddle.nn.Dropout 功能一致,但两者参数不一致,差异对比
36 torch.nn.Dropout2d paddle.nn.Dropout2D 功能一致,但两者参数不一致,差异对比
37 torch.nn.Dropout3d paddle.nn.Dropout3D 功能一致,但两者参数不一致,差异对比
38 torch.nn.LSTM paddle.nn.LSTM 功能一致,但两者参数不一致,差异对比
39 torch.nn.GRU paddle.nn.GRU 功能一致,但两者参数不一致,差异对比
40 torch.nn.Embedding paddle.nn.Embedding 功能一致,但两者参数不一致,差异对比
41 torch.nn.ELU paddle.nn.ELU 功能一致,torch 参数更多,PaddlePaddle 未定义inplace参数表示在不更改变量的内存地址的情况下,直接修改变量的值
42 torch.nn.Hardsigmoid paddle.nn.Hardsigmoid 功能一致,torch 参数更多,PaddlePaddle 未定义inplace参数表示在不更改变量的内存地址的情况下,直接修改变量的值
43 torch.nn.LeakyReLU paddle.nn.LeakyReLU 功能一致,torch 参数更多,PaddlePaddle 未定义inplace参数表示在不更改变量的内存地址的情况下,直接修改变量的值
44 torch.nn.PReLU paddle.nn.PReLU 功能一致,参数一致
45 torch.nn.ReLU paddle.nn.ReLU 功能一致,torch 参数更多,PaddlePaddle 未定义inplace参数表示在不更改变量的内存地址的情况下,直接修改变量的值
46 torch.nn.Softmax paddle.nn.Softmax 功能一致,参数一致

持续更新...

Loss 类 API 映射列表

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

序号 PyTorch API PaddlePaddle API 备注
1 torch.nn.L1Loss paddle.nn.L1Loss 功能一致,参数一致,PyTorch 存在废弃参数size_averagereduce
2 torch.nn.MSELoss paddle.nn.MSELoss 功能一致,参数一致,PyTorch 存在废弃参数size_averagereduce
3 torch.nn.CrossEntropyLoss paddle.nn.CrossEntropyLoss 功能一致,但两者参数不一致,差异对比
4 torch.nn.KLDivLoss paddle.nn.KLDivLoss 功能一致,但两者参数不一致,差异对比
5 torch.nn.BCELoss paddle.nn.BCELoss 功能一致,参数一致,PyTorch 存在废弃参数size_averagereduce
6 torch.nn.BCEWithLogitsLoss paddle.nn.BCEWithLogitsLoss 功能一致,参数一致,PyTorch 存在废弃参数size_averagereduce
7 torch.nn.SmoothL1Loss paddle.nn.SmoothL1Loss 功能一致,参数一致,PyTorch 存在废弃参数size_averagereduce

持续更新...

工具类 API 映射列表

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

序号 PyTorch API PaddlePaddle API 备注
1 torch.nn.DataParallel paddle.DataParallel 功能一致,但两者参数不一致,差异对比
2 torch.nn.parameter.Parameter paddle.static.create_parameter 功能一致,但两者参数不一致,差异对比
3 torch.nn.utils.clip_grad_value_ paddle.nn.ClipGradByValue 功能一致,但两者参数不一致,组合实现
4 torch.utils.data.DataLoader paddle.io.DataLoader 功能不一致,差异对比
5 torch.utils.data.random_split paddle.io.random_split 功能一致,参数一致,组合实现
6 torch.utils.data.distributed.DistributedSampler 无对应实现 组合实现
7 torch.utils.data.Dataset paddle.io.Dataset 功能一致,参数一致
8 torch.utils.data.BatchSampler paddle.io.BatchSampler 功能一致,但两者参数不一致,差异对比
9 torch.utils.data.Sampler paddle.io.Sampler 功能一致,参数一致

持续更新...

视觉类 API 映射列表

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

序号 PyTorch API PaddlePaddle API 备注
1 torchvision.transforms.Compose paddle.vision.transforms.Compose 功能一致,参数一致
2 torchvision.transforms.ToPILImage 无对应实现 组合实现
3 torchvision.transforms.Resize paddle.vision.transforms.Resize 功能一致,参数一致
4 torchvision.transforms.ToTensor paddle.vision.transforms.ToTensor 功能一致,参数一致
5 torchvision.transforms.RandomHorizontalFlip paddle.vision.transforms.RandomHorizontalFlip 功能一致,参数一致
6 torchvision.transforms.CenterCrop paddle.vision.transforms.CenterCrop 功能一致,参数一致
7 torchvision.transforms.ColorJitter paddle.vision.transforms.ColorJitter 功能一致,参数一致
8 torchvision.transforms.Grayscale paddle.vision.transforms.Grayscale 功能一致,参数一致
9 torchvision.transforms.Normalize paddle.vision.transforms.Normalize 功能一致,但两者参数不一致,差异对比
10 torchvision.transforms.RandomResizedCrop paddle.vision.transforms.RandomResizedCrop 功能一致,参数一致
11 torchvision.transforms.Pad paddle.vision.transforms.Pad 功能一致,参数一致
12 torchvision.transforms.RandomCrop paddle.vision.transforms.RandomCrop 功能一致,参数一致
13 torchvision.transforms.RandomRotation paddle.vision.transforms.RandomRotation 功能一致,参数一致
14 torchvision.transforms.RandomVerticalFlip paddle.vision.transforms.RandomVerticalFlip 功能一致,参数一致
15 torchvision.transforms.Lambda 无对应实现 组合实现
17 torchvision.utils.save_image 无对应实现 组合实现
18 torchvision.models 系列模型 X2Paddle 提供 使用方式

持续更新...