如何修改单值Tensor的元素值?现有尝试方法均不可行求正解
修改单值PyTorch Tensor元素值的正确方法
tensor.item()仅用于读取单值Tensor的元素值,无法直接赋值。针对单值Tensor,以下是几种高效的原地修改方式,不会生成新Tensor:
使用
fill_()原地填充目标值:import torch t = torch.tensor(2.0) t.fill_(3.0) print(t.item()) # 输出3.0这是最直接的原地修改方法,操作高效。
若需保留梯度追踪(训练场景),使用
copy_():import torch t = torch.tensor(2.0, requires_grad=True) t.copy_(torch.tensor(3.0)) print(t.item()) # 输出3.0该操作会保留Tensor的梯度相关信息。
直接修改
data属性(不建议在梯度追踪场景使用):import torch t = torch.tensor(2.0) t.data = torch.tensor(3.0) print(t.item()) # 输出3.0此方法直接修改底层数据,会绕过梯度追踪机制。
避免使用自除后乘的迂回方案,这类操作既冗余又会额外生成新Tensor,上述原地操作是更优选择。
内容的提问来源于stack exchange,提问作者AnArrayOfFunctions
相关产品推荐
相关产品推荐

