X2Paddle
X2Paddle copied to clipboard
pytorch的swin模型转paddle出现问题
在转pytroch训练的swin-tiny模型到paddle时,出现报错:
所训练的swin模型是:swin_tiny_patch4_window7_224 转模型输入的尺寸是:
# 构建输入
input_data = np.random.rand(1, 3, 224, 224).astype("float32")
模型训练尺寸和输入尺寸是一致的,请问为什么会报这种错呢?
@BgLoveXixi 您好,感谢反馈,看样子像是shap没有对上导致,麻烦提供一下组网代码、参数以及转换脚本吧
另外,可以描述一下以下两个问题吗: 1、具体业务场景 2、为什么有转到Paddle部署的需求呢?
感谢~
@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 麻烦把组网代码、参数以及上面转换脚本一起打包,上传到百度云,发我一份吧
@wjj19950828 已经将相关代码发送到您的邮箱了,麻烦帮忙看一下,谢谢!