改变tensor的函数操作会用一个下划线后缀来标示。比如,torch.FloatTensor.abs_()会在原地计算绝对值,并返回改变后的tensor,而tensor.FloatTensor.abs()将会在一个新的tensor中计算结果。
a=torch.tensor([1,2,3,4])
b=torch.tensor([-1,2,3,4])
print(a.abs_())
print(a)
print(b.abs())
print(b)
结果:
tensor([1, 2, 3, 4])
tensor([1, 2, 3, 4])
tensor([1, 2, 3, 4])
tensor([-1, 2, 3, 4])
如上结果,使用下划线的abs_()改变了张量的内容,而使用abs()未对张量本身进行改变。