{"id":19412723,"url":"https://github.com/tensorlayer/paddle2tlx","last_synced_at":"2025-04-24T11:31:30.601Z","repository":{"id":93136246,"uuid":"561277139","full_name":"tensorlayer/Paddle2TLX","owner":"tensorlayer","description":"Transfer PaddlePaddle's codes to TensorLayerX's codes","archived":false,"fork":false,"pushed_at":"2023-02-10T08:29:35.000Z","size":3869,"stargazers_count":10,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-03T04:12:28.320Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tensorlayer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-03T10:49:32.000Z","updated_at":"2024-11-07T12:30:35.000Z","dependencies_parsed_at":"2023-03-16T08:15:22.089Z","dependency_job_id":null,"html_url":"https://github.com/tensorlayer/Paddle2TLX","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tensorlayer%2FPaddle2TLX","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tensorlayer%2FPaddle2TLX/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tensorlayer%2FPaddle2TLX/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tensorlayer%2FPaddle2TLX/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tensorlayer","download_url":"https://codeload.github.com/tensorlayer/Paddle2TLX/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250618231,"owners_count":21460048,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-10T12:27:57.568Z","updated_at":"2025-04-24T11:31:30.589Z","avatar_url":"https://github.com/tensorlayer.png","language":"Python","readme":"# paddle2tlx\n\n持续更新...\n\n## 功能简介\n\npaddle2tlx 是一款面向 TensorLayerX 的模型转换工具，可以方便的将由 PaddlePaddle 实现的模型迁移到 TensorLayerX 框架上运行。\n\n## 使用描述\n\n### 参数说明\n\n| 参数名称 | 参数描述 |  备注 |\n| -- | -- |  -- |\n| modle_name | 模型名称 | 可选(便于转换后验证模型) |\n| model_type | 模型类别 | 可选(便于转换后验证模型) |\n| input_dir_pd | paddle源工程目录 | 必选 |\n| output_dir_tlx | tensorlayerx目标工程目录 | 必选 |\n| save_tag | 是否保存转换后的预训练模型 | 模型脚本中设置 |\n| pretrained_model | 转换后预训练模型保存路径 | 模型脚本中设置 |\n\n### 使用方式\n\n#### 准备转前 paddle 模型工程代码\n\n将 paddle 模型代码放在自己创建的一个文件夹下，转前和转后代码按模型任务类别进行划分，文件夹包含当前模型源码文件和依赖代码。预训练模型权重存放路径采用的是脚本指定的外部文件夹。以图像分类模型为例，转前模型文件夹结构如下，其中包含60个分类任务的模型定义脚本：\n\n```shell\npd_models/  # 转前模型根目录\n└── paddleclas  # 图像分类模型\n    ├── alexnet.py\n    ├── convnext.py\n    ├── cspdarknet.py\n    ├── cswin_transformer.py\n    ├── darknet53.py\n    ├── deit.py\n    ├── __init__.py\n    ├── ops # 依赖算子\n    │   ├── __init__.py\n    │   ├── ops_fusion.py\n    │   └── theseus_layer.py\n    └── utils  # 通用方法\n        ├── common_func.py\n        └── __init__.py\n    ...\n```\n\n#### 执行转换\n\n**Pycharm中执行转换**\n\n改变 paddle2tlx/convert.py 文件以下几个变量的默认值，然后运行该文件执行转换。\n\n- input_dir_pd：paddle 模型工程代码文件夹\n- output_dir_tlx：转换后 tensorlayerx 模型存放文件夹\n- model_name：模型名称(可选)\n- model_type：模型类别(可选)\n\n**命令行方式转换**\n\n```shell\n# 1. 首先, 将 paddle2tlx 工具包装到自己创建的 Python 环境中\npip install -e .\n\n# 2. 然后, 执行代码转换\n# 方式1 - 推荐\n# 先执行代码转换\npaddle2tlx --input_dir_pd pd_models/paddleclas --output_dir_tlx tlx_models/paddleclas\n# 转换后单独验证模型\ncd examples\npython validation.py --input_dir_pd ../pd_models/paddleclas --output_dir_tlx ../tlx_models/paddleclas --model_name vgg16 --model_type clas\n\n# 方式2\n# 转换+验证某个模型\npaddle2tlx --input_dir_pd pd_models/paddleclas --output_dir_tlx tlx_models/paddleclas --model_name vgg16 --model_type clas\n```\n\n转换后模型的目录结构和转前目录结构保持一致。不同任务类别模型的训练脚本和测试脚本存放在 examples 目录下，可留作单独测试用。不同设备间迁移测试模型时，可以保留 pd_models 和 tlx_models 下的模型工程代码和 examples 目录。\n\n对于不支持的 API 算子，还需对转换工具做适配优化。\n\n#### 预训练模型存放路径\n\n如果预训练模型提供了下载链接，会将预训练模型自动下载到 `~/.cache/paddle/hapi/weights` 目录，不同任务存放在各自的子文件夹下，如分类模型会自动下载到 `~/.cache/paddle/hapi/weights/paddleclas` 目录。\n\n如果预训练模型没有提供下载链接或是自己训练，会将预训练模型统一下载到 `pretrain` 目录下，同样按任务区分。\n\n\n## 更新记录\n\n### 模型适配\n\n#### 分类模型\n\n| 序号 | 模型 | 类别误差 | 前后误差 | 状态 | 方向 | 总表序号 |\n| -- | -- | -- | -- | -- | -- |-- |\n| 1 | vgg16(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 31 |\n| 2 | alexnet(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 1 |\n| 3 | resnet50(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 32 |\n| 4 | resnet101(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 33 |\n| 5 | googlenet(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 14 |\n| 6 | mobilenetv1(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 23 |\n| 7 | mobilenetv2(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 24 |\n| 8 | mobilenetv3(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 25 |\n| 9 | shufflenetv2(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 39 |\n| 10 | squeezenet(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 40 |\n| 11 | inceptionv3(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 19 |\n| 12 | regnet(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 30 |\n| 13 | tnt(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 41 |\n| 14 | darknet53(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 46 |\n| 15 | densenet(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 5 |\n| 16 | rednet50(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 28 |\n| 17 | rednet101(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 29 |\n| 18 | cspdarknet53(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 2 |\n| 19 | efficientnet_b1(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 11 |\n| 20 | efficientnet_b7(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 12 |\n| 21 | dla34(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 7 |\n| 22 | dla102(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 8 |\n| 23 | dpn68(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 9 |\n| 24 | dpn107(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 10 |\n| 25 | ghostnet(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 13 |\n| 26 | hardnet39(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 17 |\n| 27 | hardnet85(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 18 |\n| 28 | resnest50(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 34 |\n| 29 | resnext50(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 35 |\n| 30 | resnext101(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 36 |\n| 31 | rexnet(pretrained model) | 微小误差 | 0.00061244145 | 完成 | PaddleClas | 37 |\n| 32 | se_resnext(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 38 |\n| 33 | esnet_x0_5(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 47 |\n| 34 | esnet_x1_0(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 48 |\n| 35 | vit(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas |  |\n| 36 | alt_gvt_small(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 15 |\n| 37 | alt_gvt_base(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 16 |\n| 38 | swin_transformer_base(pretrained model) | 0.0 |  |  | PaddleClas | 3 |\n| 39 | swin_transformer_small(pretrained model) | 0.0 |  |  | PaddleClas | 4 |\n| 40 | pcpvt_base(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 26 |\n| 41 | pcpvt_large(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 27 |\n| 42 | xception41(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 42 |\n| 43 | xception65(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 43 |\n| 44 | xception41_deeplab(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 44 |\n| 45 | xception65_deeplab(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 45 |\n| 46 | levit(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 21 |\n| 47 | mixnet(pretrained model) | 微小误差 | 0.00048300158 | 完成 | PaddleClas | 22 |\n| 48 | convnext(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 新增 |\n| 49 | cswin(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 新增 |\n| 50 | deittiny(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 新增 |\n| 51 | deitsmall(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 新增 |\n| 52 | deitbase(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 新增 |\n| 53 | dvt(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 新增 |\n| 54 | peleenet(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 新增 |\n| 55 | pp_hgnet(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 新增 |\n| 56 | pp_lcnet(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 新增 |\n| 57 | pp_lcnet_v2(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 新增 |\n| 58 | pvt_v2(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 新增 |\n| 59 | res2net(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 新增 |\n| 60 | van(pretrained model) | 一致 | 0.0 | 完成 | PaddleClas | 新增 |\n\n\n#### 分割模型\n\n| 序号 | 模型 | 前后误差 | 状态 | 方向 | 总表序号 |\n| -- | -- | -- | -- | -- |-- |\n| 1 | fast_scnn | 0.0 | 完成 | PaddleSeg | 76 |\n| 2 | hrnet | 0.0 | 完成 | PaddleSeg | 75 |\n| 3 | encnet | 0.0 | 完成 | PaddleSeg | 77 |\n| 4 | bisenet | 0.0 | 完成 | PaddleSeg | 83 |\n| 5 | fastfcn | 0.0 | 完成 | PaddleSeg | 73 |\n| 6 | enet | 0.0 | 完成 | PaddleSeg | 74 |\n\n\n#### 检测模型\n\n| 序号 | 模型 | 前后误差 | 状态 | 方向 | 总表序号 |\n| -- | -- | -- | -- | -- |-- |\n| 1 | yolov3 | 0.0 | 完成 | PaddleDec | 54 |\n| 2 | ssd | 0.0 | 完成 | PaddleDec | 60 |\n| 3 | yolox | 0.0 | 完成 | PaddleDec | 57 |\n| 4 | picodet_lcnet | 0.0 | 完成 | PaddleDec | 67 |\n| 5 | fcos_r50 | 0.0 | 完成 | PaddleDec | 68 |\n| 6 | fcos_dcn | 0.0 | 完成 | PaddleDec | 69 |\n| 7 | RetinaNet | 0.0 | 完成 | PaddleDec | 64 |\n| 8 | Mask_RCNN | 0.0 | 完成 | PaddleDec | 63 |\n| 9 | Faster_RCNN | 0.0 | 完成 | PaddleDec | 62 |\n| 10 | CascadeRCNN | 0.0 | 完成 | PaddleDec | 70 |\n| 11 | SOLOv2 | 0.0 | 完成 | PaddleDec | 72 |\n| 12 | GFL | 0.0 | 完成 | PaddleDec | 新增 |\n| 13 | TOOD | 0.0 | 完成 | PaddleDec | 新增 |\n| 14 | CenterNet | 0.0 | 完成 | PaddleDec | 新增 |\n| 15 | TTFNet | 0.0 | 完成 | PaddleDec | 新增 |\n\n\n#### 遥感模型\n\n| 序号 | 模型 | 前后误差 | 状态 | 方向 | 总表序号 |\n| -- | -- | -- | -- | -- |-- |\n| 1 | bit | 0.0 | 完成 | PaddleRS | 98 |\n| 2 | cdnet | 0.0 | 完成 | PaddleRS | 87 |\n| 3 | stanet | 0.0 | 完成 | PaddleRS | 88 |\n| 4 | fcef | 0.0 | 完成 | PaddleRS | 89 |\n| 5 | fccdn | 0.0 | 完成 | PaddleRS | 91 |\n| 6 | dsamnet | 0.0 | 完成 | PaddleRS | 97 |\n| 7 | snunet | 0.0 | 完成 | PaddleRS | 90 |\n| 8 | dsifn | 0.0 | 完成 | PaddleRS | 95 |\n| 9 | unet | 0.0 | 完成 | PaddleRS | 84 |\n| 10 | farseg | 0.0 | 完成 | PaddleRS | 85 |\n| 11 | deeplab | 0.0 | 完成 | PaddleRS | 86 |\n\n\n#### 生成模型\n\n| 序号 | 模型 | 前后误差 | 状态 | 方向 | 总表序号 |\n| -- | -- | -- | -- | -- |-- |\n| 1 | cyclegan | 0.0 | 完成 | PaddleGAN | 78 |\n| 2 | starganv2 | 0.0 | 完成 | PaddleGAN | 80 |\n| 3 | prenet | 0.0 | 完成 | PaddleGAN | 81 |\n| 4 | u-gat-it | 0.0 | 完成 | PaddleGAN | 82 |\n| 5 | styleganv2 | 0.0 | 完成 | PaddleGAN | 79 |\n\n\n### 自然语言模型\n\n| 序号 | 模型 | 前后误差 | 状态 | 方向 | 总表序号 |\n| -- | -- | -- | -- | -- |-- |\n| 1 | TextCNN | 0.0 | 完成 | PaddleNLP | 100 |\n| 2 | LSTM | 0.0 | 完成 | PaddleNLP | 93 |\n| 3 | RNN | 0.0 | 完成 | PaddleNLP | 94 |\n\n\n### 功能优化\n\n**20221028**\n\n待补充\n\n\n## 依赖环境\n\n```shell\npython=3.7\npaddlepaddle==2.3.0\ntensorlayerx==0.5.7  # latest\n```\n\n详见 requirements.txt 文件\n\n\n## 参考\n\n- [TensorLayerX](https://github.com/tensorlayer/TensorLayerX)\n- [PaddlePaddle](https://github.com/PaddlePaddle/Paddle)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftensorlayer%2Fpaddle2tlx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftensorlayer%2Fpaddle2tlx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftensorlayer%2Fpaddle2tlx/lists"}