PaddlePaddle / PaddleNLP

👑 Easy-to-use and powerful NLP and LLM library with 🤗 Awesome model zoo, supporting wide-range of NLP tasks from research to industrial applications, including 🗂Text Classification, 🔍 Neural Search, ❓ Question Answering, ℹ️ Information Extraction, 📄 Document Intelligence, 💌 Sentiment Analysis etc.
https://paddlenlp.readthedocs.io
Apache License 2.0
12.11k stars 2.94k forks source link

自己写了一个BertModle的子类,使用from_pretrained('bert-wwm-chinese'),报错无法解决,怎么讲将预加载的模型参数传递到子类? #2565

Closed MARKLIN1000 closed 1 year ago

MARKLIN1000 commented 2 years ago

屏幕截图 2022-06-18 164842 屏幕截图 2022-06-18 164924 屏幕截图 2022-06-18 165012 屏幕截图 2022-06-18 165038 屏幕截图 2022-06-18 165115 屏幕截图 2022-06-18 165130 屏幕截图 2022-06-18 165147

问题1:如何解决这个bug呢? 问题2:没有BertConfig讲么将1处获得的预加载模型测参数传递给2处BertModel的子类呢?

LemonNoel commented 2 years ago

目前的初始化方式有点问题,可以参考下下边的代码和注释哈

截屏2022-06-18 下午6 10 58
MARKLIN1000 commented 2 years ago

image image image S image image 这么初始化还是报错了啊,没进入到MYBert里面

LemonNoel commented 2 years ago

debug

这里说明预训练模型参数已经load结束了,执行到你实现的init了,可以学习一下python中类的初始化是在做什么以及类的方法怎么用:https://www.liaoxuefeng.com/wiki/1016959663602400/1017496031185408

如果你想用self.encoder替换self.bert.encoder,直接self.encoder=self.bert.encoder就可以了,加了括号就是传参数直接调用方法了。

然后搜相关类的初始化函数,看看都需要哪些参数,不是单纯传bert进去,这里self.bert是个BertModel类型的对象,要初始化BertEmbeddings,需要看这里需要什么参数,然后按顺序传进去:https://github.com/PaddlePaddle/PaddleNLP/blob/develop/paddlenlp/transformers/bert/modeling.py#L46-L51

MARKLIN1000 commented 2 years ago

好的,非常感谢您回答

------------------ 原始邮件 ------------------ 发件人: @.>; 发送时间: 2022年6月18日(星期六) 晚上7:27 收件人: @.>; 抄送: @.>; @.>; 主题: Re: [PaddlePaddle/PaddleNLP] 自己写了一个BertModle的子类,使用from_pretrained('bert-wwm-chinese'),报错无法解决,怎么讲将预加载的模型参数传递到子类? (Issue #2565)

这里说明预训练模型参数已经load结束了,执行到你实现的init了,可以学习一下python中类的初始化是在做什么以及类的方法怎么用:https://www.liaoxuefeng.com/wiki/1016959663602400/1017496031185408

如果你想用self.encoder替换self.bert.encoder,直接self.encoder=self.bert.encoder就可以了,加了括号就是传参数直接调用方法了。

然后搜相关类的初始化函数,看看都需要哪些参数,不是单纯传bert进去,这里self.bert是个BertModel类型的对象,要初始化BertEmbeddings,需要看这里需要什么参数,然后按顺序传进去:https://github.com/PaddlePaddle/PaddleNLP/blob/develop/paddlenlp/transformers/bert/modeling.py#L46-L51

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

github-actions[bot] commented 1 year ago

This issue is stale because it has been open for 60 days with no activity. 当前issue 60天内无活动,被标记为stale。

github-actions[bot] commented 1 year ago

This issue was closed because it has been inactive for 14 days since being marked as stale. 当前issue 被标记为stale已有14天,即将关闭。