PyTorch-PaddlePaddle 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 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 差异对比
5 torch.from_numpy paddle.to_tensor 差异对比
6 torch.zeros paddle.zeros 差异对比
7 torch.zeros_like paddle.zeros_like 差异对比
8 torch.ones paddle.ones 差异对比
9 torch.ones_like paddle.ones_like 差异对比
10 torch.empty paddle.empty 差异对比
11 torch.empty_like paddle.empty_like 差异对比
12 torch.full paddle.full 功能一致,参数不一致
13 torch.full_like paddle.full_like 差异对比
14 torch.arange paddle.arange 功能一致,参数不一致
15 torch.range paddle.arange 功能一致,参数不一致
16 torch.linspace paddle.linspace 功能一致,参数不一致
17 torch.eye paddle.eye 功能一致,参数不一致
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 功能一致,参数不一致
35 torch.multinomial paddle.multinomial 功能一致,参数不一致
36 torch.normal paddle.normal 差异对比
37 torch.rand paddle.rand 差异对比
38 torch.randint paddle.randint 功能一致,参数不一致
39 torch.randn paddle.randn 差异对比
40 torch.randperm paddle.randperm 功能一致,参数不一致
41 torch.save paddle.save 差异对比
42 torch.load paddle.load 差异对比
43 torch.abs paddle.abs 功能一致,PaddlePaddle未定义out参数代表输出Tensor
44 torch.absolute paddle.abs 功能一致,PaddlePaddle未定义out参数代表输出Tensor
45 torch.acos paddle.acos 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
46 torch.arccos paddle.acos 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
47 torch.add padle.add 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
48 torch.asin paddle.asin 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
49 torch.arcsin paddle.asin 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
50 torch.atan paddle.atan 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
51 torch.arctan paddle.atan 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
52 torch.ceil paddle.ceil 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
53 torch.clamp paddle.clip 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
54 torch.conj paddle.conj 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
55 torch.cos paddle.cos 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
56 torch.cosh paddle.cosh 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
57 torch.div paddle.divide 差异对比
58 torch.divide paddle.divide 差异对比
59 torch.erf paddle.erf 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
60 torch.exp paddle.exp 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
61 torch.floor paddle.floor 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
62 torch.floor_divide paddle.floor_divide 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
63 torch.fmod paddle.mod 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
64 torch.log paddle.log 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
65 torch.log10 paddle.log10 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
66 torch.log1p paddle.log1p 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
67 torch.log2 paddle.log2 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
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 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
73 torch.multiply paddle.multiply 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
74 torch.pow paddle.pow 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
75 torch.real paddle.real 功能一致,参数名不一致
76 torch.reciprocal paddle.reciprocal 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
77 torch.remainder paddle.mod 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
78 torch.round paddle.round 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
79 torch.rsqrt paddle.rsqrt 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
80 torch.sign paddle.sign 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
81 torch.sin paddle.sin 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
82 torch.sinh paddle.sinh 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
83 torch.sqrt paddle.sqrt 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
84 torch.argmax paddle.argmax 功能一致,参数名不一致
85 torch.argmin paddle.argmin 功能一致,参数名不一致
86 torch.max paddle.max 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
87 torch.min paddle.min 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
88 torch.square paddle.square 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
89 torch.sub paddle.subtract 差异对比
90 torch.subtract paddle.subtract 差异对比
91 torch.tanh paddle.tanh 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
92 torch.true_divide paddle.divide 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
93 torch.dist paddle.dist 功能一致,参数名不一致
94 torch.logsumexp paddle.logsumexp 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
95 torch.mean paddle.mean 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
96 torch.median paddle.median 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
97 torch.norm paddle.norm 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor以及dtype参数代表输出Tensor类型
98 torch.prod paddle.prod 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
99 torch.std paddle.std 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
100 torch.std_mean 无对应实现 组合实现
101 torch.sum paddle.sum 功能一致,参数名不一致
102 torch.unique paddle.unique 差异对比
103 torch.var paddle.var 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
104 torch.var_mean 无对应实现 组合实现
105 torch.allclose paddle.allclose 功能一致,参数名不一致
106 torch.argsort paddle.argsort 功能一致,参数名不一致
107 torch.eq paddle.equal 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
108 torch.equal paddle.equal_all 功能一致,参数名不一致
109 torch.ge paddle.greater_equal 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
110 torch.gt paddle.greater_than 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
111 torch.isfinite paddle.isfinite 功能一致,参数名不一致
112 torch.isinf paddle.isinf 功能一致,参数名不一致
113 torch.isnan paddle.isnan 功能一致,参数名不一致
114 torch.kthvalue 无对应实现 组合实现
115 torch.le paddle.less_equal 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
116 torch.lt paddle.less_than 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
117 torch.maximum paddle.maximum 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
118 torch.minimum paddle.minimum 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
119 torch.ne paddle.not_equal 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
120 torch.sort paddle.argsort 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
121 torch.topk paddle.topk 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
122 torch.cross paddle.cross 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
123 torch.any paddle.any 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
124 torch.cumsum paddle.cumsum 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
125 torch.diag paddle.diag 差异对比
126 torch.diag_embed paddle.nn.functional.diag_embed 功能一致
127 torch.einsum paddlenlp.ops.einsum 功能一致,需要安装paddlenlp
128 torch.flatten paddle.flatten 功能一致,参数名不一致
129 torch.flip paddle.flip 功能一致,参数名不一致
130 torch.rot90 无对应实现 组合实现
131 torch.meshgrid paddle.meshgrid 功能一致
132 torch.roll paddle.roll 功能一致,参数名不一致
133 torch.tril paddle.tril 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
134 torch.triu paddle.triu 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
135 torch.bmm paddle.bmm 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
136 torch.cholesky paddle.cholesky 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
137 torch.dot paddle.dot 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
138 torch.inverse paddle.inverse 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
139 torch.trace paddle.trace 差异对比
140 torch.addmv 无对应实现 组合实现
141 torch.addr 无对应实现 组合实现
142 torch.baddbmm 无对应实现 组合实现
143 torch.addmm paddle.addmm 功能一致,参数名不一致,PaddlePaddle未定义out参数代表输出Tensor
144 torch.chain_matmul 无对应实现 组合实现
145 torch.cholesky_inverse 无对应实现 组合实现
146 torch.cholesky_solve 无对应实现 组合实现
147 torch.matmul paddle.matmul 差异对比
148 torch.mm paddle.matmul 差异对比
149 torch.mv 无对应实现 组合实现
150 torch.scatter paddle.scatter_nd_add 组合实现

持续更新...

组网类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 差异对比
9 torch.nn.MaxPool2d paddle.nn.MaxPool2D 差异对比
10 torch.nn.MaxPool3d paddle.nn.MaxPool3D 差异对比
11 torch.nn.MaxUnpool1d 无对应实现 组合实现
12 torch.nn.MaxUnpool2d 无对应实现 组合实现
13 torch.nn.MaxUnpool3d 无对应实现 组合实现
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 功能一致,PaddlePaddle未定义inplace参数表示在不更改变量的内存地址的情况下,直接修改变量的值
42 torch.nn.Hardsigmoid paddle.nn.Hardsigmoid 功能一致,PaddlePaddle未定义inplace参数表示在不更改变量的内存地址的情况下,直接修改变量的值
43 torch.nn.LeakyReLU paddle.nn.LeakyReLU 功能一致,PaddlePaddle未定义inplace参数表示在不更改变量的内存地址的情况下,直接修改变量的值
44 torch.nn.PReLU paddle.nn.PReLU 功能一致
45 torch.nn.ReLU paddle.nn.ReLU 功能一致,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 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提供 使用方式

持续更新...