pytorch小知识点(一)-------in-place operation

本文介绍了PyTorch中的in-place operation,即不经过复制直接修改tensor值的操作,常见于带有下划线的函数如.add_()。此外,文章提到了两种不应使用in-place操作的情况:requires_grad=True的叶子张量和在求梯度过程中需要的张量。
摘要由CSDN通过智能技术生成

一、什么是in-place

在pytorch的很多函数中经常看到in-place选项,具体是什么意思一直一知半解。这次专门来学习一下,in-place operation在pytorch中是指改变一个tensor的值的时候,不经过复制操作,而是直接在原来的内存上改变它的值。可以把它称为原地操作符。

在pytorch中经常加后缀“_”来代表原地in-place operation,比如说.add_() 或者.scatter()。我们可以将in_place操作简单的理解类似于python中的"+=","-="等操作。

举个例子,下面是正常的加操作,执行结束后x的值没有变化

import torch

x = torch.rand(2)

x
Out[3]: tensor([0.3486, 0.2924])   #<-----这是x初始值


y = torch.rand(2)

y
Out[5]: tensor([0.6301, 0.0101])   #<-----这是y初始值

x.add(y)
Out[6]: tensor([0.9788, 0.3026])     #<-----这是x+y的结果

x
Out[7]: tensor([0.3486, 0.2924])    #<-----这是执行操作之后x的值

y
Out[8]: tensor([0.6301, 0.0101])     #<-----这是执行操作之后y的值

我们可以发现,在正常操作之后原操作数的值不会发生变化。

下面我们来看看in_place操作

import torch

x = torch
  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值