使用 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
,则嵌入正在接受训练,否则不是。
我一直在使用预训练嵌入 (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)
– IfTrue
, the tensor does not get updated in the learning process. Equivalent toembedding.weight.requires_grad = False
. Default:True
如果 word_embeddingsA.requires_grad == True
,则嵌入正在接受训练,否则不是。