PyTorch数据的非标准化
以下代码:PyTorch数据的非标准化,pytorch,Pytorch,以下代码: ux = torch.tensor(np.array([[255,1,255],[255,1,255]])).float() print(ux) ux = F.normalize(ux, p=2, dim=1) print(ux) 印刷品: tensor([[ 255., 1., 255.], [ 255., 1., 255.]]) tensor([[ 0.7071, 0.0028, 0.7071], [ 0.7071,
ux = torch.tensor(np.array([[255,1,255],[255,1,255]])).float()
print(ux)
ux = F.normalize(ux, p=2, dim=1)
print(ux)
印刷品:
tensor([[ 255., 1., 255.],
[ 255., 1., 255.]])
tensor([[ 0.7071, 0.0028, 0.7071],
[ 0.7071, 0.0028, 0.7071]])
如何取消规范化ux
以返回值
tensor([[ 255., 1., 255.],
[ 255., 1., 255.]])
从
有各种资源详细说明了此过程,例如但没有详细说明
F.normalize的非规范化结果。normalizeF.normalize
只是根据的除以范数,因此只需将其乘以其大小即可
这意味着您仍然需要访问原始向量的幅值ux
,否则,这是不可能的,因为无法从规范化向量恢复有关幅值的信息
以下是如何做到这一点:
#我修改了输入以使其更有趣,但您可以使用任何其他值
ux=torch.tensor(np.array([[255,1255],[101,10123]]).float()
震级=ux.norm(p=2,dim=1,keepdim=True)#新
ux=F.标准化(ux,p=2,dim=1)
ux_orig=ux*震级#新
打印(ux_原版)
#产出:
#张量([[255,1,255.],
# [101., 10., 123.]])
tensor([[ 0.7071, 0.0028, 0.7071],
[ 0.7071, 0.0028, 0.7071]])