首页 Paddle框架 帖子详情
自定义模型使用paddle.Model训练出的结果不能导出为静态图
收藏
快速回复
Paddle框架 问答模型训练 327 1
自定义模型使用paddle.Model训练出的结果不能导出为静态图
收藏
快速回复
Paddle框架 问答模型训练 327 1

自定义模型后,训练,推理结果都是正确,但是保存为静态图模型后,再推理同样的样本结果就不一致了

代码如下:

import paddle as pp

class Net(pp.nn.Layer):
...
    @pp.jit.to_static()
    def forward(self, x):
...
model = pp.Model(Net(), inputs=x, labels=y)
model.fit( save_dir="output/" )
model = pp.Model(Net(), inputs=x)
model.load("output/final")
model.prepare()
model.save('inference', False)
results = model.predict() #results:1234
config = paddle_infer.Config('inference.pdmodel', 'inference.pdiparams')
predictor = paddle_infer.create_predictor(config)
predictor.run() #results:9876
     

 

我修改为如下方式,结果还是不一致,原来能正确识别,导出静态后精度只有10%

n=Net(is_infer=True)
para_state_dict = pp.load("/home/aistudio/output/final.pdparams")
n.set_state_dict(para_state_dict)

model = pp.jit.to_static( n, input_spec=[input_define] )
pp.jit.save(model, 'model')

 

 

 

以下动态图输出结果与pp.jit.to_static输出结果一致都是精度不准确的结果。只有在model = pp.Model(Net(), inputs=x, labels=y) 精度才是准确的
n=Net(is_infer=True)
para_state_dict = pp.load("/home/aistudio/output/final.pdparams")
n.set_state_dict(para_state_dict)
n.eval()
img_name=r'/home/aistudio/sample_img/8205.jpg'
path=r'/home/aistudio/sample_img'
for root, dirs, files in os.walk(path):
for f in files:
img_name = os.path.join(root, f)
img = Image.open(img_name)
x = np.array(img, dtype="float32").reshape((1,IMAGE_SHAPE_C, IMAGE_SHAPE_H, IMAGE_SHAPE_W))
x=pp.to_tensor(x, dtype='float32')
out = n(x)
print(f,out)

0
收藏
回复
全部评论(1)
时间顺序
l
liuyang77886
#2 回复于2022-05

paddle.Model.load结果是正确,paddle.load结果错误

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户