飞桨模型保存_飞桨框架2.0RC新增模型保存、加载方案,更全面

本文介绍了飞桨框架2.0RC的动态图模式下模型保存与加载体系,包括训练场景下仅保存加载模型参数的paddle.save和paddle.load接口,以及推理&部署场景下保存模型结构和参数的paddle.jit.save和paddle.jit.load接口。通过实例展示了如何在训练中断后继续训练以及如何进行模型部署。
摘要由CSDN通过智能技术生成

通过一段时间系统的课程学习,算法攻城狮张同学对于飞桨框架的使用越来越顺手,于是他打算在企业内尝试使用飞桨进行AI产业落地。

但是AI产业落地并不是分秒钟的事情,除了专业技能过硬,熟悉飞桨的使用外,在落地过程中还会遇到很多细节的问题。这不,他就想到了两个棘手的小问题:

· 企业的数据集都比较大,使用这种大规模数据集进行模型训练的耗时会很长,往往需要持续数天甚至更长时间。这种情况下,就需要多次保存模型训练的参数,避免由于训练意外中断而前功尽弃。

· 模型训练至收敛后,需要将模型及参数保存下来,用于后续在服务器或者移动端环境中部署,在推理场景中发挥作用。

那么,如何高效地解决张同学提出的这两个问题呢?飞桨框架2.0RC为开发者提供了全新的动态图模式下的模型保存与加载体系,其中包含两个模型保存与加载的方案,分别适用于上述两个场景。(友情提示:飞桨框架2.0RC版本开始主推动态图模式,仍兼容保留对静态图模式的支持,但不再推荐使用。)

场景一:训练场景模型保存与加载(只需保存和加载模型参数即可)

在训练阶段,开发者仅需要保存和加载模型参数即可。飞桨提供了paddle.save和paddle.load接口用于实现该功能。当保存和加载模型参数时,可使用 paddle.save/load 结合Layer和Optimizer的state_dict()方法实现,这两个接口的关系入下图所示:

· state_dict是保存Layer或者Optimizer参数的键值对,state_dict的key为参数名,value为参数真实的numpy array数值;

· pdparams为Layer参数文件名的后缀;

· pdopt为Optimizer参数文件名的后缀。

相关文档获取地址:

https://www.paddlepaddle.org.cn/documentation/docs/zh/2.0-rc1/api/paddle/framework/io/save_cn.html

https://www.paddlepaddle.org.cn/documentation/docs/zh/2.0-rc1/api/paddle/framework/io/load_cn.html

下面举一个简单的线性回归模型示例。

import numpy as np

import paddle

import paddle.nn as nn

import paddle.optimizer as opt

BATCH_SIZE = 16

BATCH_NUM = 4

EPOCH_NUM = 10

IMAGE_SIZE = 784

CLASS_NUM = 10

# define a random dataset

class RandomDataset(paddle.io.Dataset):

def __init__(self, num_samples):

self.num_samples = num_samples

def __getitem__(self, idx):

image = np.random.random([IMAGE_SIZE]).astype('float32')

label = np.random.randint(0, CLASS_NUM - 1, (1, )).astype('int64')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值