¿Cómo realizar operaciones in situ en PyTorch?

En este artículo, veremos diferentes operaciones in situ realizadas en tensores en PyTorch.

Las operaciones in situ se utilizan para alterar directamente los valores de un tensor. Los datos recabados del usuario no serán copiados. El beneficio fundamental de adoptar estos procedimientos es que reducen el almacenamiento de memoria mientras aumentan la computación, lo que facilita el manejo de datos de gran dimensión.

En este artículo, veremos cómo realizar algunas de las operaciones aritméticas (suma, resta y multiplicación) con y sin operaciones en el lugar.

Sintaxis para la suma

Normal Addition: t1.add(t2)
In-place Addition: t1.add_(t2)

Sintaxis para la resta

Normal Subtraction: t1.sub(t2)
In-place Subtraction: t1.sub_(t2)

Sintaxis para la resta

Normal Multiplication: t1.mul(t2)
In-place Multiplication: t1.mul_(t2)

Ejemplo 1:

En este ejemplo, estamos creando dos tensores a y b que contienen un solo valor y realizan todas las operaciones de suma, y ​​luego mostraremos el contenido de un tensor usando el método item().

Python3

# import required library
import torch
  
# create two tensors a and b with
# single value
a = torch.tensor(2)
b = torch.tensor(6)
  
print("Addition")
# Normal addition
a.add(b)
  
# display content in a
print("Normal addition : ", a.item())
  
# In-place addition
a.add_(b)
  
# display content in a
print("In-place addition : ", a.item())

Producción:

Addition
Normal addition :  2
In-place addition :  8

Ejemplo 2:

En este ejemplo, estamos creando dos tensores a y b que contienen un solo valor y realizan todas las operaciones de resta, y luego mostraremos el contenido de un tensor usando el método item().

Python3

# import required library
import torch
  
# create two tensors a and b with 
# single value
a = torch.tensor(2)
b = torch.tensor(6)
  
print("Subtraction")
# Normal Subtraction
a.sub(b)
  
# display content in a
print("Normal Subtraction : ", a.item())
  
# In-place Subtraction
a.sub_(b)
  
# display content in a
print("In-place Subtraction : ", a.item())

Producción:

Subtraction
Normal Subtraction :  2
In-place Subtraction :  -4

Ejemplo 3

En este ejemplo, estamos creando dos tensores a y b que contienen un solo valor y realizan todas las operaciones de multiplicación, y luego mostraremos el contenido de un tensor usando el método item().

Python3

# import required library
import torch
  
# create two tensors a and b with 
# single value
a = torch.tensor(2)
b = torch.tensor(6)
  
print("Multiplication")
# Normal Multiplication
a.mul(b)
  
# display content in a
print("Normal Subtraction : ", a.item())
  
# In-place Multiplication
a.mul_(b)
  
# display content in a
print("In-place Multiplication : ", a.item())

Producción:

Multiplication
Normal Subtraction :  2
In-place Multiplication :  12

Ejemplo 4

En este ejemplo, estamos creando dos tensores a y b que contienen un valor múltiple y realizan todas las operaciones de suma y multiplicación, y luego mostraremos el contenido de un tensor usando el método item().

Python3

# import required library
import torch
  
# create two tensors a and b with 
# 4 values each
a = torch.tensor([2, 3, 4, 5])
b = torch.tensor([2, 3, 4, 5])
  
print("Addition")
# Normal addition
a.add(b)
  
# display content in a
print("Normal addition : ", a)
  
# In-place addition
a.add_(b)
  
# display content in a
print("In-place addition : ", a)
  
  
print("\nMultiplication")
  
# Normal Multiplication
a.mul(b)
  
# display content in a
print("Normal Subtraction : ", a)
  
# In-place Multiplication
a.mul_(b)
  
# display content in a
print("In-place Multiplication : ", a)
print()

Producción:

Addition
Normal addition :  tensor([2, 3, 4, 5])
In-place addition :  tensor([ 4,  6,  8, 10])

Multiplication
Normal Subtraction :  tensor([ 4,  6,  8, 10])
In-place Multiplication :  tensor([ 8, 18, 32, 50])

Publicación traducida automáticamente

Artículo escrito por sravankumar8128 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *