如何在PyTorch中执行就地操作?
就地操作直接更改张量的內容,无需复制。因为它不创建输入的副本,所以在处理高维数据时可以减少内存使用。就地操作有助于减少GPU内存的使用。
在PyTorch中,就地操作总是后缀为"_",例如add_()、mul_()等。
步骤
要执行就地操作,可以按照以下步骤进行:
导入所需的库。所需的库是torch。
定义/创建要执行就地操作的张量。
执行普通和就地操作,以查看它们之间的区别。
显示在普通和就地操作中获得的张量。
示例1
下面的Python程序突出了普通加法和就地加法之间的区别。在就地加法中,第一个操作数“x”的值会改变;而在普通加法中,它保持不变。
# import required library
import torch
# create two tensors x and y
x = torch.tensor(4)
y = torch.tensor(3)
print("x=", x.item())
print("y=", y.item())
# Normal addition
z = x.add(y)
print("Normal Addition x:",x.item())
# In-place addition
z = x.add_(y)
print("In-place Addition x:",x.item())输出
x = 4 y = 3 Normal Addition x: 4 In-place Addition x: 7
在上面的程序中,两个张量x和y相加。在普通加法运算中,x的值不变,但在就地加法运算中,它的值改变了。
示例2
下面的Python程序显示了普通加法和就地加法运算在内存分配方面的区别。
# import required library
import torch
# create two tensors x and y
x = torch.tensor(4)
y = torch.tensor(3)
print("id(x)=", id(x))
# Normal addition
z = x.add(y)
print("Normal Addition id(z):",id(z))
# In-place addition
z = x.add_(y)
print("In-place Addition id(z):",id(z))输出
id(x)= 63366656 Normal Addition id(z): 63366080 In-place Addition id(z): 63366656
在上面的程序中,普通操作为“z”分配新的内存位置,而就地操作则不会分配新的内存。
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP