Torch es una biblioteca de aprendizaje automático de código abierto , un marco informático científico y un lenguaje de script basado en el lenguaje de programación Lua . [3] Proporciona una amplia gama de algoritmos para el aprendizaje profundo y utiliza el lenguaje de secuencias de comandos LuaJIT y una implementación C subyacente . A partir de 2018, Torch ya no se encuentra en desarrollo activo. [4] Sin embargo , PyTorch , que se basa en la biblioteca Torch, se desarrolla activamente a partir de diciembre de 2020. [5]
![]() | |
Autor (es) original (es) | Ronan Collobert, Samy Bengio , Johnny Mariéthoz [1] |
---|---|
Versión inicial | Octubre de 2002 [1] |
Lanzamiento estable | 7.0 / 27 de febrero de 2017 [2] |
Repositorio | ![]() |
Escrito en | Lua , LuaJIT , C , CUDA y C ++ |
Sistema operativo | Linux , Android , Mac OS X , iOS |
Tipo | Biblioteca para aprendizaje automático y aprendizaje profundo |
Licencia | Licencia BSD |
Sitio web | antorcha |
antorcha
El paquete principal de Torch es torch
. Proporciona una matriz N-dimensional flexible o Tensor, que admite rutinas básicas para indexar, segmentar, transponer, convertir, redimensionar, compartir almacenamiento y clonación. Este objeto es utilizado por la mayoría de los otros paquetes y, por lo tanto, forma el objeto principal de la biblioteca. El tensor también soporta operaciones matemáticas como max
, min
, sum
, distribuciones estadísticas como uniforme , normales y multinomial , y BLAS operaciones como producto de punto , la multiplicación de matrices-vector , la multiplicación de matrices , producto matriz-vector y matriz producto .
Lo siguiente ejemplifica el uso de 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 . DoubleTensor de dimensión 3 x4 ]> a [ 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 . DoubleTensor 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ínimo () - 1,7844365427828
El torch
paquete también simplifica la serialización y la programación orientada a objetos al proporcionar varias funciones de conveniencia que se utilizan en todos sus paquetes. La función se puede utilizar para crear fábricas de objetos ( clases ). Cuando se llama al constructor , torch se inicializa y establece una tabla Lua con la metatabla definida por el usuario , lo que convierte a la tabla en un objeto .torch.class(classname, parentclass)
Los objetos creados con la fábrica de antorchas también se pueden serializar, siempre que no contengan referencias a objetos que no se puedan serializar, como las corrutinas de Lua y los 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 nn
paquete se utiliza para construir redes neuronales . Está dividido en objetos modulares que comparten una Module
interfaz común . Los módulos tienen un método forward()
y backward()
que les permite propagarse hacia adelante y hacia atrás , respectivamente. Los módulos se pueden unir utilizando compuestos de módulos , como Sequential
, Parallel
y Concat
para crear gráficos complejos adaptados a las tareas. Módulos más simples como Linear
, Tanh
y Max
conforman los módulos componentes básicos. Esta interfaz modular proporciona una diferenciación de gradiente automática de primer orden . Lo que sigue es un caso de uso de ejemplo para construir un perceptrón multicapa usando módulos:
> mlp = nn . Secuencial () > mlp : agregar ( nn . Lineal ( 10 , 25 ) ) - 10 entradas, 25 unidades ocultas > mlp : agregar ( nn . Tanh () ) - alguna función de transferencia de tangente hiperbólica > mlp : agregar ( nn . Lineal ( 25 , 1 ) ) - 1 salida > = mlp : adelante ( 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 métodos forward()
y backward()
para calcular la pérdida y los gradientes de retropropagación, respectivamente. Los criterios son útiles para entrenar redes neuronales en tareas clásicas. Los criterios comunes son el criterio de error cuadrático medio implementado en MSECriterion
y 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 mlp
módulo en el tensor de entrada x
, tensor de destino y
con un escalar learningRate
:
función gradUpdate ( mlp , x , y , learningRate ) criterio local = nn . ClassNLLCriterion () pred = mlp : adelante ( x ) local err = criterio : adelante ( pred , y ); mlp : zeroGradParameters (); t local = criterio : hacia atrás ( pred , y ); mlp : hacia atrás ( x , t ); mlp : updateParameters ( tasa de aprendizaje ); final
También tiene StochasticGradient
clase para entrenar una red neuronal usando el descenso de gradiente estocástico , aunque el optim
paquete ofrece muchas más opciones al respecto, como la regularización de la caída del impulso y del peso .
Otros paquetes
Muchos paquetes distintos de los paquetes oficiales anteriores se utilizan con Torch. Estos se enumeran en la hoja de referencia de la antorcha. [6] Estos paquetes adicionales proporcionan una amplia gama de utilidades como paralelismo, entrada / salida asíncrona, 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 Facebook AI Research Group, [7] IBM , [8] Yandex [9] y el Idiap Research Institute . [10] Torch se ha ampliado para su uso en Android [11] e iOS . [12] Se ha utilizado para construir implementaciones de hardware para flujos de datos como los que se encuentran en las redes neuronales. [13]
Facebook ha lanzado un conjunto de módulos de extensión como software de código abierto. [14]
Ver también
- Comparación de software de aprendizaje profundo
- PyTorch
Referencias
- ^ a b "Torch: una biblioteca de software de aprendizaje automático modular". 30 de octubre de 2002. CiteSeerX 10.1.1.8.9850 . Cite journal requiere
|journal=
( ayuda ) - ^ Collobert, Ronan. "Antorcha7" . GitHub .
- ^ "Torch7: un entorno similar a Matlab para el aprendizaje automático" (PDF) . Sistemas de procesamiento de información neuronal . 2011.
- ^ Léame del repositorio de Torch GitHub
- ^ Repositorio PyTorch GitHub
- ^ "Hoja de trucos · Torch / Torch7 Wiki" .
- ^ Entrevista de KDnuggets con Yann LeCun, experto en aprendizaje profundo, director del laboratorio de inteligencia artificial de Facebook
- ^ Noticias de hackers
- ^ Página de Facebook de Yann Lecun
- ^ Instituto de Investigación IDIAP: Antorcha
- ^ Repositorio de GitHub Torch-android
- ^ Repositorio de GitHub de Torch-ios
- ^ NeuFlow: un procesador de flujo de datos reconfigurable en tiempo de ejecución para Vision
- ^ "Facebook Open-Sources un tesoro de herramientas de inteligencia artificial" . Cableado . 16 de enero de 2015.
enlaces externos
- Página web oficial