torchscript作为pytorch的模型保留方式

这里主要介绍3种类型:

1.单变量输入

x = torch.randn(1, 3, 256, 256, requires_grad=True).cuda()
script_module = torch.jit.trace(model,x,strict=False)
torch.jit.save(script_module, "model.pt")

2.多个变量作为输入

x1 = torch.randn(1, 3, 256, 256, requires_grad=True).cuda()
x2 = torch.randn(1, 3, 256, 256, requires_grad=True).cuda()
x3 = torch.randn(1, 3, 256, 256, requires_grad=True).cuda()
script_module = torch.jit.trace(model,(x1,x2,x3),strict=False)
torch.jit.save(script_module, "model.pt")

 注意:多个输入的时候,上述的x1,x2,x3是可以任意的,只要使用括号括起来就行。

3.分布式训练的模型保存成torchscript

x = torch.randn(1, 3, 256, 256, requires_grad=True).cuda()
script_module = torch.jit.trace(model.module,x,strict=False)
torch.jit.save(script_module, "model.pt")

没看错,就是加个module就行,这样才是模型,不然是分布式的数据结构 

至此,常用的保存为torchscript就介绍到这里

至于加载模型也很简单

model=torch.jit.load("model.pt")

 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐