pytorch版代码修改为paddle版代码总结
收藏
之前将自己写的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
收藏
请登录后评论
精炼啊
CrossEntropyLoss这个bug帮了大忙
感觉paddle2.0以后的版本,在迁移pytorch模型上越来越方便了
而且还有x2paddle这个模型转换工具
很棒的经验分享,避免大家踩坑,感谢感谢
感谢大佬分享,太强了!
特征复制:paddle.tile;torch.repeat
特征变形:paddle.reshape;torch.view
特征复制:paddle.tile;torch.repeat
非常感谢,刚好最近在做这个迁移。
现在有算子映射表了,可以参考这个https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/08_api_mapping/pytorch_api_mapping_cn.html
是的,PaddlePaddle和pytorch的用法虽然很相似,但是并不是一一对应的。不过学过一方之后另一方应该很容易上手。
而且PaddlePaddle有各种套件模型库,感觉生态比pytorch更友好。