Python – método PyTorch atan2()

El método PyTorch atan2() calcula la arcotangente elemento-sabio de (y/x) , donde y, x son los tensores con coordenadas y y coordenadas x de los puntos respectivamente. La arcotangente de (y/x) es el ángulo entre el eje x positivo y la línea de (0,0) a (x,y). Entonces, el método atan2() calcula estos ángulos. Estos ángulos se miden en radianes y están en el rango [-pi, pi] . Estos ángulos se calculan con la ayuda del cuadrante de los puntos. Los cuadrantes se pueden devolver usando los signos de los elementos de los tensores de entrada. Matemáticamente, también se puede denominar arcotangente de 2 argumentos (atan2).

antorcha.atan2() función:

Sintaxis: torch.atan2(entrada, otro, salida=Ninguno)

Parámetros:

  • entrada: el primer tensor de entrada (coordenadas y).
  • otro: el segundo tensor de entrada (coordenadas x).
  • out: el tensor de salida, un argumento de palabra clave.

Retorno: Devuelve un nuevo tensor con arcotangente elemento-sabio de (entrada/otro).

Ejemplo 1:

En este ejemplo, calculamos valores de arcotangente de 2 argumentos por elementos para dos tensores de entrada, aquí el arcotangente de 2 argumentos se calcula por elementos.

Python3

# Python 3 program to demonstrate torch.atan2() method
# importing torch
import torch
  
# defining first tensor (y-coordinates)
y = torch.tensor([0., 40., -137., -30.])
  
# defining second tensor (x-coordinates)
x = torch.tensor([120., -4., -70., 23.])
  
# printing the two tensors
print('Tensor y:', y)
print('Tensor x:', x)
  
# computing the 2-argument arc tangent
result = torch.atan2(y, x)
print('atan2(y,x):', result)

Producción:

Tensor y: tensor([   0.,   40., -137.,  -30.])
Tensor x: tensor([120.,  -4., -70.,  23.])
atan2(y,x): tensor([ 0.0000,  1.6705, -2.0432, -0.9167])

Ejemplo 2:

En el siguiente ejemplo, calculamos el arcotangente de 2 argumentos por elemento y visualizamos el resultado como un gráfico 2D usando Matplotlib. Aquí trazamos un gráfico 2D entre los valores «y/x» y «atan2()». Los valores «y/x» se trazan en el eje x y los valores «atan2()» en el eje y. Observe que al aumentar aumenta el valor de atan2().

Python3

# Python3 program to demonstrate torch.atan2() method
%matplotlib qt 
  
# importing required libraries
import torch
import numpy as np
import matplotlib.pyplot as plt
  
# defining first tensor (y-coordinates)
b = np.array([-8,-3,-2,-1,0,1,2,3,4])
  
# defining second tensor (x-coordinates)
a = np.array([1,1,1,1,1,1,1,1,1])
y = torch.tensor(b)
x = torch.tensor(a)
print('Tensor y:\n', y)
print('Tensor x:\n', x)
  
# computing the 2-argument arc tangent
result = torch.atan2(y,x)
print('atan2:\n', result)
  
# tensor to numpy array
result = result.numpy()
  
# plot the result using matplotlib
plt.plot(b/a, result, color='r', label='atan2')
plt.xlabel("y/x")
plt.ylabel("atan2")
plt.title("2D atan2 plot GFG")
plt.show()

Producción:

Tensor y:

 tensor([-8, -3, -2, -1, 0, 1, 2, 3, 4], dtype=antorcha.int32)

Tensor x:

 tensor([1, 1, 1, 1, 1, 1, 1, 1, 1], dtype=antorcha.int32)

atan2:

 tensor([-1.4464, -1.2490, -1.1071, -0.7854, 0.0000, 0.7854, 1.1071, 1.2490,

         1.3258])

Ejemplo 3:

En el siguiente ejemplo, calculamos el arcotangente de 2 argumentos por elementos y visualizamos el resultado como un gráfico 3D usando Matplotlib. Aquí, trazamos un gráfico 3D entre «x», «y» y «atan2()». Los valores «x» se trazan en el eje x, los valores «y» se trazan en el eje y, y los valores «atan2()» están en el eje z. Observe cómo el atan2() está relacionado con la x y la y.

Python3

# Python3 program to demonstrate torch.atan2() method
%matplotlib qt 
  
# importing required libraries
import torch
import numpy as np
import matplotlib.pyplot as plt
  
# defining first tensor (y-coordinates)
b = np.arange(25,74, 1)
y = torch.tensor(b)
  
# defining second tensor (x-coordinates)
a = np.arange(1,50, 1)
x = torch.tensor(a)
print('Tensor y:\n', y)
print('Tensor x:\n', x)
  
# computing the 2-argument arc tangent
result = torch.atan2(y,x)
print('atan2 values:\n', result)
  
# converting the result tensor to numpy array
result = result.numpy()
  
# plot the result as 3D using matplotlib
fig = plt.figure()
  
# syntax for 3-D projection
ax = plt.axes(projection ='3d')
ax.plot3D(a, b, result, 'green')
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('atan2')
ax.set_title('3D atan2() plot GFG')
plt.show()

Producción:

Tensor y:

 tensor([25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,

        43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,

        61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73], dtype=torch.int32)

Tensor x:

 tensor([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,

        19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,

        37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49], dtype=torch.int32)

valores atan2:

 tensor([1.5308, 1.4940, 1.4601, 1.4289, 1.4001, 1.3734, 1.3487, 1.3258, 1.3045,

        1,2847, 1,2663, 1,2490, 1,2329, 1,2178, 1,2036, 1,1903, 1,1777, 1,1659,

        1,1547, 1,1442, 1,1342, 1,1247, 1,1157, 1,1071, 1,0990, 1,0913, 1,0839,

        1.0769, 1.0701, 1.0637, 1.0575, 1.0517, 1.0460, 1.0406, 1.0354, 1.0304,

        1.0256, 1.0209, 1.0165, 1.0122, 1.0081, 1.0041, 1.0002, 0.9965, 0.9929,

        0,9894, 0,9861, 0,9828, 0,9796])

Publicación traducida automáticamente

Artículo escrito por shahidedu7 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 *