减少XLTransformers的输出层大小

问题描述

我正在使用拥抱面实现来运行以下内容

t1 = "My example sentence is really great."

tokenizer = TransfoXLTokenizer.from_pretrained('transfo-xl-wt103')
model = TransfoXLLMHeadModel.from_pretrained("transfo-xl-wt103")

encoded_input = tokenizer(t1,return_tensors='pt',add_space_before_punct_symbol=True) 
output = model(**encoded_input)
tmp = output[0].detach().numpy()
print(tmp.shape)

>>> (1,7,267735)

获取我将在下游使用的输出嵌入为目标。

最后一个尺寸是/基本上/比我预期的要大,并且看起来是整个vocab_size的大小,而不是基于ECL from the paper的缩小尺寸(我可能会误解)

我将提供model的什么参数来减小该层的尺寸到较小的尺寸空间,更像是基本BERT(400或768),并且仍然基于预训练的嵌入获得良好的性能

解决方法

那是因为您使用了...LMHeadModel,它可以预测下一个标记。您可以改用TransfoXLModel.from_pretrained("transfo-xl-wt103"),然后output[0]是形状为(batch_size,sequence_length,hidden_size)的最后一个隐藏状态。