Theano es una biblioteca de Python y un compilador optimizador para manipular y evaluar expresiones matemáticas, especialmente aquellas con valores matriciales. [2] En Theano, los cálculos se expresan utilizando una sintaxis similar a NumPy y se compilan para ejecutarse de manera eficiente en arquitecturas de CPU o GPU .
Theano es un proyecto de código abierto [3] desarrollado principalmente por el Instituto de Algoritmos de Aprendizaje de Montreal (MILA) de la Universidad de Montreal . [4]
El nombre del software hace referencia al antiguo filósofo Theano , asociado durante mucho tiempo con el desarrollo de la media áurea .
El 28 de septiembre de 2017, Pascal Lamblin publicó un mensaje de Yoshua Bengio , director de MILA: el desarrollo principal cesaría después del lanzamiento de la versión 1.0 debido a las ofertas competitivas de importantes actores industriales. [5] Theano 1.0.0 se lanzó el 15 de noviembre de 2017. [6]
El 17 de mayo de 2018, Chris Fonnesbeck escribió en nombre del equipo de desarrollo de PyMC [7] que los desarrolladores de PyMC asumirán oficialmente el control del mantenimiento de Theano una vez que el equipo de desarrollo de MILA se retire. El 29 de enero de 2021, comenzaron a usar el nombre Aesara para su bifurcación de Theano. [8]
El 29 de noviembre de 2022, el equipo de desarrollo de PyMC anunció que los desarrolladores de PyMC bifurcarán el proyecto Aesara bajo el nombre de PyTensor. [9]
El código siguiente es el ejemplo original de Theano. Define un gráfico computacional con dos escalares a y b de tipo double y una operación entre ellos (suma) y luego crea una función Python f que realiza el cálculo real. [10]
importar theano desde theano importar tensor# Declarar dos escalares simbólicos de punto flotante a = tensor . dscalar () b = tensor . dscalar ()# Crea una expresión simple c = a + b# Convierte la expresión en un objeto invocable que toma valores (a, b) como entrada y calcula un valor para c f = theano . function ([ a , b ], c )# Vincula 1.5 a 'a', 2.5 a 'b' y evalúa 'c' assert 4.0 == f ( 1.5 , 2.5 )