存储torch模型到path:
torch.save(NN_model.state_dict(), 'path')
加载模型并且设置为eval()
NN_model = MyModel() # load the structure of the NN model
state_dict = torch.load('model_state_dict.pth')
NN_model.load_state_dict(state_dict)
NN_model.eval()
以PINN为例,假设模型的输入是 ( x , y ) (x,y) (x,y), 输出是 u θ ( x , y ) u_{\theta}(x,y) uθ(x,y), 如果想要求 ∂ u ∂ x \frac{\partial u}{\partial x} ∂x∂u 以及 ∂ u ∂ y \frac{\partial u}{\partial y} ∂y∂u:
u= self.NN_model(inputs)
U = torch.sum(u)
U.backward(retain_graph=True)
u_x = torch.autograd.grad(U, x, grad_outputs=torch.ones_like(U), retain_graph=True, create_graph=True,allow_unused=True )[0]
u_y = torch.autograd.grad(U, y, grad_outputs=torch.ones_like(U), retain_graph=True, create_graph=True,allow_unused=True )[0]