获取Pytorch中间某一层权重或者特征;state_dict()、named_parameters()

取参数

g=model.named_parameters()
parm={}
for name,parameters in model.named_parameters():
    print(name,':',parameters.size())
    parm[name]=parameters.detach().numpy()

一些方法

why extra ?为什么有多余提示?

        self.bert = BertModel(config, add_pooling_layer=False)
        self.embeddings = self.bert.embeddings
        self.encoder = self.bert.encoder

self.model.encoder.layer[-1].output.dense.bias
[-6.8667e-02, 1.1496e-02, 1.4397e-03, 2.4952e-02, -2.0034e-02,
model2.bert.encoder.layer[-1].output.dense.bias
[-6.8667e-02, 1.1496e-02, 1.4397e-03, 2.4952e-02, -2.0034e-02,
原来的设计是成立的,多出的参数设计为共享的,经过实验:确实是共享的,warning的提示是多余的。但是!这样没有必要,直接使用self.bert.embeddings来操纵bert的各个部件就可以了。根本不需要这样重命名。

它们并非被随机初始化,而是的确由预训练的参数加载。

posted @ 2022-02-22 11:00  zae  阅读(480)  评论(0编辑  收藏  举报