首页 Paddle框架 帖子详情
paddle.Model.load加载模型继续训练时出现Optimizer set error
收藏
快速回复
Paddle框架 问答模型训练深度学习 2553 4
paddle.Model.load加载模型继续训练时出现Optimizer set error
收藏
快速回复
Paddle框架 问答模型训练深度学习 2553 4

定义了一个非常简单的网络,训练之后,使用model.save(path)保存,

再次model.load(path)加载模型继续训练的时候,出现了如下错误

AssertionError: Optimizer set error, linear_18.w_0_moment1_0 should in state dict

请问如何解决,怎样才能正确加载模型继续训练?多谢

环境aistudio,版本paddlepaddle 2.1.2

主要代码如下

def getNet(input_size):
    net=paddle.nn.Sequential(
        paddle.nn.Linear(input_size, 512),
        paddle.nn.ReLU(),
        paddle.nn.Linear(512, 100),
        paddle.nn.ReLU(),
        paddle.nn.Linear(100, 5)
    )
    
    model = paddle.Model(net)
    model.prepare(optimizer=paddle.optimizer.Adam(learning_rate=0.01,parameters=model.parameters()),
              loss=paddle.nn.MSELoss(),
              metrics=paddle.metric.Accuracy())
    return model

myModel=getNet(10)

myModel.fit(dataset)

myModel.save('abc')

#继续训练时
myModel=getNet(10)

myModel.load('abc')

myModel.fit(dataset)
#出现如下错误
#AssertionError: Optimizer set error, linear_18.w_0_moment1_0 should in state dict

 

0
收藏
回复
全部评论(4)
时间顺序
三岁
#2 回复于2021-09

查看一下优化器是不是和之前的一样,好像是优化器设置错误了

0
回复
f
fanxing518
#3 回复于2021-09

问题已经解决,参照官网上的示例

继续训练的顺序

1.组网

2.load已有参数

3.pareare

#继续训练时
net=paddle.nn.Sequential(
        paddle.nn.Linear(input_size, 512),
        paddle.nn.ReLU(),
        paddle.nn.Linear(512, 100),
        paddle.nn.ReLU(),
        paddle.nn.Linear(100, 5)
    )
    
myModel = paddle.Model(net)

myModel.load('abc')

model.prepare(optimizer=paddle.optimizer.Adam(learning_rate=0.01,parameters=model.parameters()),
              loss=paddle.nn.MSELoss(),
              metrics=paddle.metric.Accuracy())

myModel.fit(dataset)
0
回复
月夜灬今夜无醉
#4 回复于2022-12

这个是什么原因啊,怎么改,我也出现这个问题了,没看懂你改了什么地方

0
回复
叶冬爱
#5 回复于2023-10
这个是什么原因啊,怎么改,我也出现这个问题了,没看懂你改了什么地方

就是应该先调用load() 然后再调用prepare() 顺序反过来就不行

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户