TorchScript和trace的区别
model = MyModule()
script = torch.jit.trace(model, inputs) # 适合固定形式的控制流(也就是没有if else)
script = torch.jit.script(model) #适合动态控制流(有if else)
可以观察两者接收的参数,会发现两者都需要传入model,但是trace还需要喂入示例数据,这样才能观察到整个网路,而后者是不需要的。
- torch.jit.trace() 适合固定形式的控制流(也就是没有if else)
- torch.jit.script() 适合动态控制流(有if else)
接着把两者打印出来:
print(script.code)
你会发现居然还原了代码,这样做的好处是方便于生产部署,得到script后我们就可以序列化保存为文件:
model.save("final_model.pt")
然后就可以脱离Python,在C++上加载运行了。