我想使用一个预先训练的拥抱脸变压器语言模型作为编码器在一个序列序列模型。
任务是语法纠错,所以输入和输出都来自同一种语言。
因此,我想知道是否可以从拥抱式面部变压器编码器中访问嵌入层,并将其用作解码器的嵌入层?
或者你还会推荐其他的方法?
发布于 2022-04-03 18:16:13
以伯特为例
如果加载BertModel
from transformers import BertModel
model = BertModel.from_pretrained("bert-base-uncased")
print(model.embeddings)
# output is
BertEmbeddings(
(word_embeddings): Embedding(30522, 768, padding_idx=0)
(position_embeddings): Embedding(512, 768)
(token_type_embeddings): Embedding(2, 768)
(LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)
(dropout): Dropout(p=0.1, inplace=False)
)
如果您用其他层(例如BertForPreTraining或BertForSequenceClassification)加载bert
from transformers import BertForSequenceClassification
model = BertForSequenceClassification.from_pretrained("bert-base-uncased")
print(model.bert.embeddings)
# output is
BertEmbeddings(
(word_embeddings): Embedding(30522, 768, padding_idx=0)
(position_embeddings): Embedding(512, 768)
(token_type_embeddings): Embedding(2, 768)
(LayerNorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)
(dropout): Dropout(p=0.1, inplace=False)
)
发布于 2022-04-03 17:34:17
是的,您可以通过以下途径访问:
model.embeddings
https://stackoverflow.com/questions/71708136
复制相似问题