Closed MARKLIN1000 closed 1 year ago
目前的初始化方式有点问题,可以参考下下边的代码和注释哈
S 这么初始化还是报错了啊,没进入到MYBert里面
这里说明预训练模型参数已经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
好的,非常感谢您回答
------------------ 原始邮件 ------------------ 发件人: @.>; 发送时间: 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: @.***>
This issue is stale because it has been open for 60 days with no activity. 当前issue 60天内无活动,被标记为stale。
This issue was closed because it has been inactive for 14 days since being marked as stale. 当前issue 被标记为stale已有14天,即将关闭。
问题1:如何解决这个bug呢? 问题2:没有BertConfig讲么将1处获得的预加载模型测参数传递给2处BertModel的子类呢?