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映射列表。
持续更新...
Loss类API映射列表¶
该文档梳理了计算loss相关的PyTorch-PaddlePaddle API映射列表。
| 序号 | PyTorch API | PaddlePaddle API | 备注 |
|---|---|---|---|
| 1 | torch.nn.L1Loss | paddle.nn.L1Loss | 功能一致,PyTorch存在废弃参数size_average和reduce。 |
| 2 | torch.nn.MSELoss | paddle.nn.MSELoss | 功能一致,PyTorch存在废弃参数size_average和reduce。 |
| 3 | torch.nn.CrossEntropyLoss | paddle.nn.CrossEntropyLoss | 差异对比 |
| 4 | torch.nn.KLDivLoss | paddle.nn.KLDivLoss | 差异对比 |
| 5 | torch.nn.BCELoss | paddle.nn.BCELoss | 功能一致,PyTorch存在废弃参数size_average和reduce。 |
| 6 | torch.nn.BCEWithLogitsLoss | paddle.nn.BCEWithLogitsLoss | 功能一致,PyTorch存在废弃参数size_average和reduce。 |
| 7 | torch.nn.SmoothL1Loss | paddle.nn.SmoothL1Loss | 功能一致,参数名不一致,PyTorch存在废弃参数size_average和reduce。 |
持续更新...
工具类API映射列表¶
该文档梳理了与数据处理、分布式处理等相关的PyTorch-PaddlePaddle API映射列表。
| 序号 | PyTorch API | PaddlePaddle API | 备注 |
|---|---|---|---|
| 1 | torch.nn.DataParallel | paddle.DataParallel | 差异对比 |
| 2 | torch.nn.parameter.Parameter | paddle.create_parameter | 差异对比 |
| 3 | torch.nn.utils.clip_grad_value_ | 无对应实现 | 组合实现 |
| 4 | torch.utils.data.DataLoader | paddle.io.DataLoader | 差异对比 |
| 5 | torch.utils.data.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映射列表。
持续更新...