激活函数nn.ReLU(inplace=True)中inplace的作用

ReLU激活函数的inplace参数用于决定是否直接在原张量上进行操作。当inplace=True时,可以节省内存并提高计算效率,但会改变原张量;而inplace=False则会创建新张量保存结果,不改变原数据。通过示例展示了两种情况下的不同行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

nn.ReLU(inplace=True)中inplace的作用

参数 inplace=True: 将计算得到的值直接覆盖之前的值

inplace:can optionally do the operation in-place. Default: False

注: 产生的计算结果不会有影响。利用in-place计算可以节省内(显)存,同时还可以省去反复申请和释放内存的时间。但是会对原变量覆盖,只要不带来错误就用。

例如:x = x+1

  • 当 inplace=True 时:对原值x进行+1操作后得到的值,直接赋值给x,而不是如下找一个中间变量y
  • 当 inplace=False 时:找中间变量指的是:先将 x 进行 +1 操作后赋值给中间变量 y,然后将 y 值赋给 x。 这样就需要内存存储变量 y。
y  = x + 1
x = y

因此当inplace=True时: 就是将从上层网络 nn.Conv2d 中传递下来的 tensor 直接进行修改,这样能够节省运算内存,不用多存储其他变量。


举例说明:

import torch
import torch.nn as nn

input = torch.randn(5)
print('输入处理前:\n', input, input.size())
print('*'*70)

print("Default. inplace=False:")
output_F = nn.ReLU(inplace=False)(input)
print('输入:\n', input, input.size())
print('输出:\n', output_F, output_F.size())

print('*'*70)

print("inplace=True:")
output_T = nn.ReLU(inplace=True)(input)
print('输入:\n', input, input.size())
print('输出:\n', output_T, output_T.size())

运行结果:

输入处理前:
 tensor([-2.2577,  0.1088, -0.9960,  0.4097, -0.3411]) torch.Size([5])
**********************************************************************
Default. inplace=False:
输入:
 tensor([-2.2577,  0.1088, -0.9960,  0.4097, -0.3411]) torch.Size([5])
输出:
 tensor([0.0000, 0.1088, 0.0000, 0.4097, 0.0000]) torch.Size([5])
**********************************************************************
inplace=True:
输入:
 tensor([0.0000, 0.1088, 0.0000, 0.4097, 0.0000]) torch.Size([5])
输出:
 tensor([0.0000, 0.1088, 0.0000, 0.4097, 0.0000]) torch.Size([5])


原文链接:https://blog.youkuaiyun.com/AugustMe/article/details/92589979
原文链接:https://blog.youkuaiyun.com/zhanly19/article/details/99232815

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Enzo 想砸电脑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值