Torch
Torch es una biblioteca de código abierto para aprendizaje automático, un marco de computación científica, y un lenguaje de script basado en el lenguaje de programación Lua.[1] Proporciona una amplia gama de algoritmos de aprendizaje profundo, y usa el lenguaje de script LuaJIT, sobre una implementación en C. Torch se ha dejado de desarrollar en 2017,[2] en favor de otras plataformas. La comunidad de soporte de la última versión estable cerró definitivamente en 2019.[3] Sin embargo Torch se sigue usando para proyectos terminados, e incluso en desarrollos a través de PyTorch. torchEl paquete central de Torch es torch. Provee un arreglo flexible N-dimensional o Tensor, el cual soporta rutinas básicas de indexado, recorte, transposición, revisión de tipos, redimensionamiento, almacenamiento compartido y clonación. Este objeto es usado por la mayoría de los otros paquetes y por lo tanto forma el objento central de la biblioteca. El Tensor también soporta operaciones matemáticas como El siguiente ejemplo usa torch vía su intérprete REPL: > a = torch.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
[torch.DoubleTensor of dimension 3x4]
> a[1][2]
-0.34010116549482
> a:narrow(1,1,2)
-0.2381 -0.3401 -1.7844 -0.2615
0.1411 1.6249 0.1708 0.8299
[torch.DoubleTensor of dimension 2x4]
> a:index(1, torch.LongTensor{1,2})
-0.2381 -0.3401 -1.7844 -0.2615
0.1411 1.6249 0.1708 0.8299
[torch.DoubleTensor of dimension 2x4]
> a:min()
-1.7844365427828
El paquete torch también simplifica la programación orientada a objetos y serialización al proveer varias funciones conveniente que son usadas a través de sus paquetes. La función Los objetos creados con el patrón de torch también puedens er serializados, mientras no contenga referencias a objetos que no puedan ser serializados, tales como Coroutine de Lua y userdata de Lua. Como sea, userdata puede ser serializado si es envuelto por una tabla (o metatabla) que provea los métodos nnEl paquete nn es usado para construir redes neuronales. Está dividido en objetos modulares que comparten una interfaz > mlp = nn.Sequential()
> mlp:add( nn.Linear(10, 25) ) -- 10 input, 25 hidden units
> mlp:add( nn.Tanh() ) -- some hyperbolic tangent transfer function
> mlp:add( nn.Linear(25, 1) ) -- 1 output
> =mlp:forward(torch.randn(10))
-0.1815
[torch.Tensor of dimension 1]
Las funciones de pérdida son implementadas como subclases de function gradUpdate(mlp,x,y,learningRate)
local criterion = nn.ClassNLLCriterion()
pred = mlp:forward(x)
local err = criterion:forward(pred, y);
mlp:zeroGradParameters();
local t = criterion:backward(pred, y);
mlp:backward(x, t);
mlp:updateParameters(learningRate);
end
Tiene también la clase Otros paquetesMuchos paquetes además the los paquetes oficiales antes mencionados son usados con Torch. Estos están listado en torch cheatsheet. Estos paquetes extras proveen una amplia gama de utilidades tales como paralelismo, entrada/salida asíncrona, procesamiento de imagen, etc. Pueden ser instalados con LuaRocks, el administrador de paquetes Lua el cual también está incluido con la distribución de Torch. AplicacionesTorch es usado por Facebook AI Research Group,[4] IBM,,[5] Yandex[6] y el Instituto de Investigación Idiap.[7] Torch ha sido extendido para su uso en Android[8] e iOS.[9] Ha sido usado para implementaciones construidas en hardware para flujos de datos como aquellos encontrados en redes neuronales.[10] Facebook ha publicado un conjunto de módulos extensiones como software de código abierto.[11] Bibliotecas relacionadas
Referencias
Enlaces externos
|