Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

动态图模式中如何传入预训练参数? #25719

Closed
DrRyanHuang opened this issue Jul 25, 2020 · 3 comments
Closed

动态图模式中如何传入预训练参数? #25719

DrRyanHuang opened this issue Jul 25, 2020 · 3 comments

Comments

@DrRyanHuang
Copy link
Member

版本:paddlepaddle1.7

您好!
请问,在动态图模式中,如何传入预训练参数呢?
我在PP的官方文档只找到了静态图传入参数的方法

我之前一般用 old_model.parameters() 返回预训练参数列表,再用 new_model.load_dict 加载预训练部分参数,由于两者的参数名字不同,还需要手动对应加载

有什么简单加载预训练参数的API吗?

顺便问一下,在动态图中怎么给参数加名字呢? (我只在官网找到了静态图参数加 name 的方法)

有点儿像伸手党了,但是我真的没在官网找到动态图的方法

@phlrain
Copy link
Collaborator

phlrain commented Jul 27, 2020

在paddle动态图中有两套命名规则,第一个是structured name就是根据self.xx 这种拼接起来的, 类似 enc.layers_0.linear.w_0,一个parameter name(主要是为了兼容静态图的命名规则),两套规则可以互转,

old_model.parameters() 接口只返回了一个list,里面只包含parameter name,没有包含structured name,new_model.load_dict( ) 默认情况会跟structured name来查找参数,如果找不到会报错退出

对于同一个模型,如果想要load_dict,需要把 old_model.state_dict() 的结果传递给 new_model的load_dict接口

@phlrain
Copy link
Collaborator

phlrain commented Jul 27, 2020

如果想设置动态图参数的名称,可以通过ParamAttr或者BiasAttr,通过self.create_parameter创建的也可以通过ParamAttr来设置

通常情况下,如果不涉及到加载静态图训练好的参数,是不需要是用这种设置的

@DrRyanHuang
Copy link
Member Author

@phlrain
我明白了,十分感谢!
百度飞桨 (゜-゜)つロ 干杯~-Paddlepaddle

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants