将自定义权重分配给 PyTorch 中的嵌入层

Assigning custom weights to embedding layer in PyTorch

PyTorch 的 nn.Embedding 是否仅支持手动设置特定值的嵌入权重?

我知道我可以像这样设置整个嵌入层的权重 -

emb_layer = nn.Embedding(num_embeddings, embedding_dim)
emb_layer.weights = torch.nn.Parameter(torch.from_numpy(weight_matrix))

但是 PyTorch 是否提供任何 succinct/efficient 方法来仅为一个特定值设置嵌入权重?

emb_layer.set_weight(5) = torch.tensor([...]) 这样的东西来手动设置值“5”的嵌入?

是的。您可以 运行 emb_layer.weight.shape 查看权重的形状,然后您可以像这样访问和更改单个权重,例如:

with torch.no_grad():
  emb_layer.weight[idx_1,idx_2] = some_value

我在这里使用了两个索引,因为嵌入层是二维的。有些层,如线性层,只需要一个索引。