如何反转 PyTorch 嵌入?
How to invert a PyTorch Embedding?
我在 PyTorch 中有一个多任务 encoder/decoder 模型,在输入端有一个(可训练的)torch.nn.Embedding
嵌入层。
在一项特定任务中,我想预训练自监督模型(以重新构建屏蔽输入数据)并将其用于推理(以填补数据空白)。
我想对于训练时间,我可以将损失测量为输入嵌入和输出嵌入之间的距离...但是为了推理,我如何反转 Embedding
以重建正确的 category/token 输出对应?我看不到例如嵌入 class...
上的“最近”函数
你可以很容易地做到:
import torch
embeddings = torch.nn.Embedding(1000, 100)
my_sample = torch.randn(1, 100)
distance = torch.norm(embeddings.weight.data - my_sample, dim=1)
nearest = torch.argmin(distance)
假设您有 1000
个具有 100
维度的标记,这将是 return 基于欧氏距离的最近嵌入。您也可以以类似的方式使用其他指标。
我在 PyTorch 中有一个多任务 encoder/decoder 模型,在输入端有一个(可训练的)torch.nn.Embedding
嵌入层。
在一项特定任务中,我想预训练自监督模型(以重新构建屏蔽输入数据)并将其用于推理(以填补数据空白)。
我想对于训练时间,我可以将损失测量为输入嵌入和输出嵌入之间的距离...但是为了推理,我如何反转 Embedding
以重建正确的 category/token 输出对应?我看不到例如嵌入 class...
你可以很容易地做到:
import torch
embeddings = torch.nn.Embedding(1000, 100)
my_sample = torch.randn(1, 100)
distance = torch.norm(embeddings.weight.data - my_sample, dim=1)
nearest = torch.argmin(distance)
假设您有 1000
个具有 100
维度的标记,这将是 return 基于欧氏距离的最近嵌入。您也可以以类似的方式使用其他指标。