0

我是 NLP 的新手。我有一个模型,我使用 SimpleTransformers 在数据集上对其进行了微调,我曾经像这样加载它:

from simpletransformers.language_representation import RepresentationModel
model = RepresentationModel(model_type='bert',model_name='./new_model',use_cuda=False)

现在我想使用泡菜格式的池层权重并在新的编码器-解码器中使用它们,编码器-解码器架构是这样的:

输入:大小 768,池:大小 768,隐藏:大小 3072,池:728,输出:大小 768

我是这样实现的(我不确定)

import torch.nn.functional as F

class Autoencoder(nn.Module):
    def __init__(self):
        super(Autoencoder, self).__init__()
        # encoder
        self.input = nn.Linear(in_features=768, out_features=768)
        self.pool = nn.Linear(in_features=768, out_features=768)
        self.hidden = nn.Linear(in_features=768, out_features=3072)
        self.pool2 = nn.Linear(in_features=3072, out_features=768)
        self.output = nn.Linear(in_features=768, out_features=768)
    def forward(self, x):
        x = F.relu(self.input(x))
        x = F.relu(self.pool(x))
        x = F.relu(self.hidden(x))
        x = F.relu(self.pool2(x))
        x = F.relu(self.output(x))
        return x

现在,我知道我可以像这样加载池层:

model.bert.pooler.state_dict()

但这似乎不适用于简单的变压器。

如何以泡菜格式保存池层?我怎样才能在那个新班级中加载这些权重?

如果你回答我,我会很高兴

4

0 回答 0