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

本文介绍了PyTorch中in-place操作的概念,通过add_()和add()两个方法的对比,展示了in-place操作如何影响变量的原始值。add_()方法会直接修改原变量,而add()则在新空间中保存结果,不改变原变量。通过实例展示了这两种方法在加法运算中的应用和结果差异。
摘要由CSDN通过智能技术生成

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.])}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值