Articulo de referencia

Antorcha (aprendizaje automático)

Torch es una biblioteca de aprendizaje automático de código abierto , un marco de computación científica y un lenguaje de programación basado en Lua . [3] Proporciona interfaces...

Torch es una biblioteca de aprendizaje automático de código abierto , un marco de computación científica y un lenguaje de programación basado en Lua . [3] Proporciona interfaces LuaJIT para algoritmos de aprendizaje profundo implementados en C. Fue creado por el Instituto de Investigación Idiap en EPFL . El desarrollo de Torch se trasladó en 2017 a PyTorch , un puerto de la biblioteca para Python . [4] [5] [6]

antorcha

El paquete principal de Torch es torch. Proporciona una matriz N-dimensional flexible o Tensor , que admite rutinas básicas para indexar, cortar, transponer, convertir tipos, cambiar de tamaño, compartir almacenamiento y clonar. Este objeto es utilizado por la mayoría de los demás paquetes y, por lo tanto, forma el objeto principal de la biblioteca. Tensor también admite operaciones matemáticas como max, min, sum, distribuciones estadísticas como uniforme , normal y multinomial , y operaciones BLAS como producto escalar , multiplicación matriz-vector , multiplicación matriz-matriz y producto matricial .

A continuación se muestra un ejemplo del uso de la antorcha a través de su intérprete REPL :

>  a  =  antorcha . randn ( 3 ,  4 )

>  = a 
- 0,2381  - 0,3401  - 1,7844  - 0,2615 
 0,1411   1,6249   0,1708   0,8299 
- 1,0434   2,2291   1,0525   0,8465 
[ antorcha . DobleTensor  de  dimensión  3 x4 ]

>  un [ 1 ][ 2 ] 
- 0,34010116549482
	
>  a : estrecho ( 1 , 1 , 2 ) 
- 0,2381  - 0,3401  - 1,7844  - 0,2615 
 0,1411   1,6249   0,1708   0,8299 
[ antorcha . DobleTensor  de  dimensión  2 x4 ]

>  a : índice ( 1 ,  antorcha . LongTensor { 1 , 2 }) 
- 0,2381  - 0,3401  - 1,7844  - 0,2615 
 0,1411   1,6249   0,1708   0,8299 
[ antorcha . DoubleTensor  de  dimensión  2 x4 ]

>  a : mín () 
- 1.7844365427828

El torchpaquete también simplifica la programación orientada a objetos y la serialización al proporcionar varias funciones prácticas que se utilizan en todos sus paquetes. La torch.class(classname, parentclass)función se puede utilizar para crear fábricas de objetos ( clases ). Cuando se llama al constructor , Torch inicializa y establece una tabla Lua con la metatabla definida por el usuario , lo que convierte la tabla en un objeto .

Los objetos creados con la fábrica de antorchas también se pueden serializar, siempre que no contengan referencias a objetos que no se pueden serializar, como corrutinas de Lua y datos de usuario de Lua . Sin embargo, los datos de usuario se pueden serializar si están envueltos por una tabla (o metatabla) que proporciona métodos read()y .write()

nn

El nnpaquete se utiliza para construir redes neuronales . Está dividido en objetos modulares que comparten una Moduleinterfaz común. Los módulos tienen un método forward()y que les permiten propagarse hacia adelante y hacia atrás , respectivamente. Los módulos se pueden unir utilizando compuestos de módulos , como y para crear gráficos complejos adaptados a tareas. Los módulos más simples, como y, forman los módulos de componentes básicos. Esta interfaz modular proporciona una diferenciación de gradiente automática de primer orden . A continuación, se muestra un ejemplo de caso de uso para construir un perceptrón multicapa utilizando módulos: backward()SequentialParallelConcatLinearTanhMax

>  mlp  =  nn . secuencial () 
>  mlp : add ( nn . lineal ( 10 ,  25 ))  -- 10 entradas, 25 unidades ocultas 
>  mlp : add ( nn . tanh ())  -- alguna función de transferencia de tangente hiperbólica 
>  mlp : add ( nn . lineal ( 25 ,  1 ))  -- 1 salida 
>  = mlp : forward ( antorcha . randn ( 10 )) 
- 0,1815 
[ antorcha . tensor  de  dimensión  1 ]

Las funciones de pérdida se implementan como subclases de Criterion, que tiene una interfaz similar a Module. También tiene forward()y backward()métodos para calcular la pérdida y los gradientes de retropropagación, respectivamente. Los criterios son útiles para entrenar la red neuronal en tareas clásicas. Los criterios comunes son el criterio de error cuadrático medio implementado en MSECriteriony el criterio de entropía cruzada implementado en ClassNLLCriterion. Lo que sigue es un ejemplo de una función Lua que se puede llamar iterativamente para entrenar un mlpmódulo en el tensor de entrada x, el tensor de destino ycon un escalar learningRate:

función  gradUpdate ( mlp ,  x ,  y ,  learningRate ) 
  criterio local  = nn . ClassNLLCriterion () pred local = mlp : forward ( x ) err local = criterio : forward ( pred , y ); mlp : zeroGradParameters (); t local = criterio : backward ( pred , y ); mlp : backward ( x , t ); mlp : updateParameters ( learningRate ); fin  
     
       
  
      
   
  

También tiene StochasticGradientuna clase para entrenar una red neuronal usando descenso de gradiente estocástico , aunque el optimpaquete proporciona muchas más opciones a este respecto, como la regularización del decaimiento del momento y del peso .

Otros paquetes

Con Torch se utilizan muchos otros paquetes además de los paquetes oficiales mencionados anteriormente. Estos se enumeran en la hoja de referencia de Torch. [7] Estos paquetes adicionales proporcionan una amplia gama de utilidades, como paralelismo, entrada/salida asincrónica, procesamiento de imágenes, etc. Se pueden instalar con LuaRocks , el administrador de paquetes de Lua que también se incluye con la distribución de Torch.

Aplicaciones

Torch es utilizado por el grupo de investigación de IA de Facebook , [8] IBM , [9] Yandex [10] y el Instituto de investigación Idiap . [11] Torch se ha ampliado para su uso en Android [12] [ se necesita una mejor fuente ] e iOS . [13] [ se necesita una mejor fuente ] Se ha utilizado para crear implementaciones de hardware para flujos de datos como los que se encuentran en las redes neuronales. [14]

Facebook ha lanzado un conjunto de módulos de extensión como software de código abierto. [15]

Véase también

Referencias

  1. ^ ab "Torch: una biblioteca modular de software de aprendizaje automático". 30 de octubre de 2002. CiteSeerX  10.1.1.8.9850 .
  2. ^ Collobert, Ronan. "Torch7". GitHub .
  3. ^ "Torch7: Un entorno similar a Matlab para el aprendizaje automático" (PDF) . Sistemas de procesamiento de información neuronal . 2011.
  4. ^ Repositorio de GitHub de Torch ReadMe
  5. ^ Repositorio de PyTorch en GitHub
  6. ^ Documentación de PyTorch
  7. ^ "Hoja de trucos · Wiki de Torch/Torch7". GitHub .
  8. ^ Entrevista de KDnuggets con Yann LeCun, experto en aprendizaje profundo y director del laboratorio de inteligencia artificial de Facebook
  9. ^ Noticias de hackers
  10. ^ Página de Facebook de Yann Lecun
  11. ^ Instituto de Investigaciones IDIAP : Antorcha
  12. ^ Repositorio de GitHub de Torch-android
  13. ^ Repositorio de GitHub de Torch-ios
  14. ^ NeuFlow: un procesador de flujo de datos reconfigurable en tiempo de ejecución para la visión
  15. ^ "Facebook publica en código abierto un tesoro de herramientas de inteligencia artificial". Wired . 16 de enero de 2015.
  • Sitio web oficial
Obtenido de "https://es.wikipedia.org/w/index.php?title=Antorcha_(aprendizaje_automático)&oldid=1262980451"