首页 炼丹房 帖子详情
pytorch版代码修改为paddle版代码总结
收藏
快速回复
炼丹房 文章新手上路 4865 11
pytorch版代码修改为paddle版代码总结
收藏
快速回复
炼丹房 文章新手上路 4865 11

之前将自己写的pytorch图像分割代码修改为paddle版本,在过程中遇到一些问题,在此进行总结。

 

如有错误,还请指正。

 

 

 

  • paddle的Dataset类的get_item返回值只能是ndarray,不能是tensor、string等其他任何类型
  • paddle的tensor转换ndarray时用x.numpy()即可,np.array(x)不行,会一直卡在这步
  • 对CrossEntropyLoss,输入的预测结果必须是N,H,W,C,虽然官网上标注的输入格式是N,C,H,W,但在分割里面这样行不通
  • paddle模型参数是parambase类型,paddle.save, paddle.load只能对模型参数、优化器参数进行加载保存,如果保存ckpt字典,模型参数是字典中的一个值,会出问题,需要把模型参数转成ndarray;paddle.load加载的模型参数结果始终是ndarray;
  • 代码模型加载文件参数: paddle用model.set_state_dict;torch用model.load_state_dict
  • 部分函数名:paddle里是Conv2D,BatchNorm2D;torch是Conv2d,BatchNorm2d
  • 特征拼接:paddle.concat;torch.cat
  • 特征变形:paddle.reshape;torch.view

  • 特征复制:paddle.tile;torch.repeat

  • 特征维度变换:paddle.transpose;torch.permute
  • 其他类型转tensor:paddle.to_tensor ;torch. Tensor

 

官方torch paddle算子映射表:https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/08_api_mapping/pytorch_api_mapping_cn.html

5
收藏
回复
全部评论(11)
时间顺序
阿修罗
#2 回复于2021-04

精炼啊

0
回复
m
mar836924042
#3 回复于2021-07

CrossEntropyLoss这个bug帮了大忙

0
回复
FutureSI
#4 回复于2021-07

感觉paddle2.0以后的版本,在迁移pytorch模型上越来越方便了

0
回复
FutureSI
#5 回复于2021-07

而且还有x2paddle这个模型转换工具

0
回复
深渊上的坑
#6 回复于2021-07

很棒的经验分享,避免大家踩坑,感谢感谢

0
回复
三岁
#7 回复于2021-07

感谢大佬分享,太强了!

0
回复
trainer
#8 回复于2021-08

特征复制:paddle.tile;torch.repeat

0
回复
trainer
#9 回复于2021-08

特征变形:paddle.reshape;torch.view

特征复制:paddle.tile;torch.repeat

0
回复
j
john3400
#10 回复于2021-12

非常感谢,刚好最近在做这个迁移。

1
回复
trainer
#11 回复于2021-12
john3400 #10
非常感谢,刚好最近在做这个迁移。

现在有算子映射表了,可以参考这个https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/08_api_mapping/pytorch_api_mapping_cn.html

0
回复
DeepGeGe
#12 回复于2021-12

是的,PaddlePaddle和pytorch的用法虽然很相似,但是并不是一一对应的。不过学过一方之后另一方应该很容易上手。

而且PaddlePaddle有各种套件模型库,感觉生态比pytorch更友好。

0
回复
在@后输入用户全名并按空格结束,可艾特全站任一用户