X2Paddle icon indicating copy to clipboard operation
X2Paddle copied to clipboard

pytorch的swin模型转paddle出现问题

Open BgLoveXixi opened this issue 2 years ago • 4 comments

在转pytroch训练的swin-tiny模型到paddle时,出现报错: QQ图片20220728164154

所训练的swin模型是:swin_tiny_patch4_window7_224 转模型输入的尺寸是:

# 构建输入
input_data = np.random.rand(1, 3, 224, 224).astype("float32")

模型训练尺寸和输入尺寸是一致的,请问为什么会报这种错呢?

BgLoveXixi avatar Jul 28 '22 03:07 BgLoveXixi

@BgLoveXixi 您好,感谢反馈,看样子像是shap没有对上导致,麻烦提供一下组网代码、参数以及转换脚本吧

另外,可以描述一下以下两个问题吗: 1、具体业务场景 2、为什么有转到Paddle部署的需求呢?

感谢~

wjj19950828 avatar Jul 31 '22 16:07 wjj19950828

@wjj19950828 应用需求是想将一个图像分类的模型转到手机端部署,使用paddlelite的框架

以下是转换代码:

import torch
import numpy as np
from swin.models.swin_transformer import SwinTransformer
# 构建输入
input_data = np.random.rand(1, 3, 224, 224).astype("float32")

swin_model_cfg_map = {
    "swin_tiny_patch4_window7_224": {
        "EMBED_DIM": 96,
        "DEPTHS": [ 2, 2, 6, 2 ],
        "NUM_HEADS": [ 3, 6, 12, 24 ],
        "WINDOW_SIZE": 7,
    }
}

model_name = "swin_tiny_patch4_window7_224"
torch_module = SwinTransformer(**swin_model_cfg_map[model_name])
torch_state_dict = torch.load("./models/ckpt_epoch_170.pth")["model"]
torch_module.load_state_dict(torch_state_dict)
# 设置为eval模式
torch_module.eval()
# 进行转换
from x2paddle.convert import pytorch2paddle
pytorch2paddle(torch_module,
               save_dir="pd_{}".format(model_name),
               jit_type="trace",
               input_examples=[torch.tensor(input_data)])

BgLoveXixi avatar Aug 01 '22 03:08 BgLoveXixi

@BgLoveXixi 麻烦把组网代码、参数以及上面转换脚本一起打包,上传到百度云,发我一份吧

wjj19950828 avatar Aug 01 '22 07:08 wjj19950828

@wjj19950828 已经将相关代码发送到您的邮箱了,麻烦帮忙看一下,谢谢!

BgLoveXixi avatar Aug 02 '22 03:08 BgLoveXixi