使用 torchtext 微调嵌入 - nn.Embedding 与 nn.Embedding.from_pretrained

Finetuning embeddings with torchtext - nn.Embedding vs. nn.Embedding.from_pretrained

我一直在使用预训练嵌入 (Glove),并希望对它们进行微调。我目前使用这样的嵌入:

word_embeddingsA = nn.Embedding(vocab_size, embedding_length)
word_embeddingsA.weight = nn.Parameter(TEXT.vocab.vectors, requires_grad=False)

我是否应该简单地设置 requires_grad=True 以允许对嵌入进行训练?或者我应该做这样的事情

word_embeddingsA = nn.Embedding.from_pretrained(TEXT.vocab.vectors, freeze=False)

这些是等价的吗?我有办法检查嵌入是否得到训练吗?

是的,它们等同于 embedding 中的状态:

freeze (boolean, optional) – If True, the tensor does not get updated in the learning process. Equivalent to embedding.weight.requires_grad = False. Default: True

如果 word_embeddingsA.requires_grad == True,则嵌入正在接受训练,否则不是。