es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿El compilador Numba de NJIT produce números diferentes en comparación con el código de Python sin procesar?

Enfrenté un problema con la herramienta njit de Numba en Python. Noté que la función da resultados diferentes cuando se ejecuta con @numba.njit y cuando se ejecuta como código de Python normal. En particular, después de depurar, noté que la discrepancia en el cálculo ocurre al realizar la inversión de matrices utilizando numpy. Por favor, vea mi código de prueba a continuación. El valor de la matriz A y el vector b están en los siguientes archivos csv a los que se puede acceder a través de los siguientes enlaces:
A.csv y
b.csv

Los resultados de la función de Python normal son los correctos. Por favor, ayúdeme a resolver este problema. ¿Necesito usar una función envoltorio de Numba alrededor de la función de inversión de matrices de numpy para resolver lo que parece ser un problema numérico?

Saludos cordiales y espero tener noticias de ustedes pronto 🙂

Ahmad

@numba.njit
def cal_Test_jit(A,b):
c = np.linalg.inv(A)@b
return c, np.linalg.inv(A)

def cal_Test(A,b):
c = np.linalg.inv(A)@b
return c, np.linalg.inv(A)

A = np.loadtxt(open(“A.csv”, “rb”), delimiter=”,”)
b = np.loadtxt(open(“b.csv”, “rb”), delimiter=”,”)

c_jit, Ai_jit = cal_Test_jit(A,b)
c, Ai = cal_Test(A,b)
err_c = abs(c-c_jit)
err_A = abs(Ai_jit-Ai)

trazando el error en los parámetros

plt.figure()
plt.plot(err_c)

solo trazando el error en las primeras tres columnas de A

fig, ax = plt.subplots(1,3)
ax[0].plot(err_A[:,0])
ax[1].plot(err_A[:,1])
ax[2].plot(err_A[:,2])

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Está enfrentando un problema con la herramienta njit de Numba en Python, donde la función arroja resultados diferentes cuando se ejecuta con @numba.njit y cuando se ejecuta como código Python simple. En particular, después de depurar, notó que la discrepancia en el cálculo ocurre al realizar la inversión de matrices usando numpy. Ha proporcionado un código de prueba y dos archivos csv con el valor de la matriz A y el vector b. Los resultados de la función de Python simple son los correctos.

    Se pregunta si necesita usar una función envoltorio de Numba alrededor de la función de inversión de matriz de numpy para resolver lo que parece ser un problema numérico.

    Ha graficado el error en los parámetros y el error en las primeras tres columnas de A.

    Sugerimos que intente usar una función envoltorio de Numba alrededor de la función de inversión de matriz de numpy para ver si resuelve el problema numérico.

Comments are closed.