Torch中“方法_“和“方法“的计算区别(如add/sub/mul/div)

Torch中"方法_"和"方法"的计算区别(如add/sub/mul/div)

在Pytorch中计算变量往往伴随着in-place,就是说存在将原值覆盖的操作可行性。其主要目的还是节约计算空间。
其实在torch计算中这类计算还是挺多的,基本上覆盖了各种计算,加减乘除,幂指数计算等等。
"方法_"表示in-place开启,即替换原值
“方法"表示in-place关闭,即需要在新的存储空间进行储存数据
以加法add为例,
在”.add_()"方法下,变量a值被覆盖

import torch
a = torch.ones(5);
print("a : {%s}"%a)
b = 3*torch.ones(5)
print("b: {%s}"%b)
c = a.add_(b)
print("a : {%s}"%a)
print("c : {%s}"%c)

结果:

a : {
    
    tensor([1., 1., 1., 1., 1.])}
b : {
    
    tensor([3., 3., 3., 3., 3.])}
a : {
    
    tensor([4., 4., 4., 4., 4.])}
c : {
    
    tensor([4., 4., 4., 4., 4.])}

在".add()"方法下,变量a值不会被覆盖

import torch
a = torch.ones(5);
print("a : {%s}"%a)
b = 3*torch.ones(5)
print("b : {%s}"%b)
c = a.add(b)
print("a : {%s}"%a)
print("c : {%s}"%c)

结果:

a : {
    
    tensor([1., 1., 1., 1., 1.])}
b : {
    
    tensor([3., 3., 3., 3., 3.])}
a : {
    
    tensor([1., 1., 1., 1., 1.])}
c : {
    
    tensor([4., 4., 4., 4., 4.])}

猜你喜欢

转载自blog.csdn.net/kakangel/article/details/118993601