我是 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()
但这似乎不适用于简单的变压器。
如何以泡菜格式保存池层?我怎样才能在那个新班级中加载这些权重?
如果你回答我,我会很高兴