参考文献:

paddle官网:模型保存与载入

场景分为两种:

  1. 训练调优场景
  2. 训练部署场景
    模型也分为两种:
  3. 静态图模型
  4. 动态图模型

一般我写的训练代码都是训练场景的动态图模式
思想和pytorch类似,非常好理解
保存和加载的代码如下:

# save
paddle.save(layer.state_dict(), "linear_net.pdparams")
paddle.save(adam.state_dict(), "adam.pdopt")
# load
layer_state_dict = paddle.load("linear_net.pdparams")
opt_state_dict = paddle.load("adam.pdopt")
layer.set_state_dict(layer_state_dict)
adam.set_state_dict(opt_state_dict)


问题是:公司需要推断测试场景用的是:推断库。它需要用部署场景下的静态图。
所以每次训练完成之后,后需要把动态图转化为静态图保存下来
代码如下:
解释:layer是网络模型,比如 layer= MNIST(),并且需要加上

def saveModel(self,layer,modelPath):
       print("------ save model ------")
       print(modelPath)
       layer.eval()
       image_shape = [None, 3, self.resize, self.resize]
       input_spec = [
           InputSpec(
               shape=image_shape, name='image', dtype='float32')
       ]
       layer = paddle.jit.to_static(layer,input_spec)
       inference_dirs = osp.join(modelPath, 'inference_model')
       if not os.path.exists(inference_dirs):
           os.makedirs(inference_dirs)

       name=inference_dirs+"/model"
       paddle.jit.save(layer, name) #

更多推荐

paddle 模型保存