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