Ir al contenido
Menú principal
Menú principal
mover a la barra lateral
ocultar
Navegación
Inicio
Casa
Índices
Buscar
Artículo al azar
Cambios recientes
English
Buscar
Buscar
español
Apariencia
Crear una cuenta
Acceder
Herramientas personales
No has accedido
Discusión
Contribuciones
Crear una cuenta
Acceder
Edición de «
Torch
»
Página
Discusión
español
Leer
Editar
Editar código
Ver historial
Herramientas
Herramientas
mover a la barra lateral
ocultar
Acciones
Leer
Editar
Editar código
Ver historial
General
Lo que enlaza aquí
Cambios relacionados
Información de la página
Apariencia
mover a la barra lateral
ocultar
Advertencia:
no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si
inicias sesión
o
creas una cuenta
, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.
Comprobación antispam. ¡
No
rellenes esto!
{{Otros usos|Torch (desambiguación)|para=otros usos}} {{Ficha de software | nombre = Torch | logo = | desplegable = | captura = | pie = | desarrollador = | autor = Ronan Collobert, Koray Kavukcuoglu, Clement Farabet |modelo_desarrollo = |lanzamiento = {{fecha de lanzamiento|30|10|2002}} |web_lanzamiento = |última_versión = 7.0 |fecha_última_versión = {{fecha|27|02|2017}} |web_última_versión = |última_versión_prueba = |fecha_última_versión_prueba = |web_última_versión_prueba = |género = Biblioteca para [[aprendizaje automático]] y [[aprendizaje profundo]] |lenguaje_programación = [[Lua]], [[LuaJIT]], [[C (lenguaje de programación)|C]], [[CUDA]] and [[C++]] |sistema_operativo = [[Linux]], [[Android]], [[Mac OS X]], [[iOS]] |plataforma = |licencia = [[Berkeley Software Distribution]] |estado = |idiomas = |español = |sitio_web = {{url|http://torch.ch/}} |soporte = |versiones = }} '''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]].<ref name="nips">{{cita publicación |autor1=Ronan Collobert |autor2=Koray Kavukcuoglu |autor3=Clement Farabet |título=Torch7: A Matlab-like Environment for Machine Learning |publicación=Neural Information Processing Systems |año=2011 |url=http://ronan.collobert.com/pub/matos/2011_torch7_nipsw.pdf }}</ref> Proporciona una amplia gama de algoritmos de [[aprendizaje profundo]], y usa el lenguaje de script [[LuaJIT]], sobre una implementación en [[C (lenguaje de programación)|C]]. Torch '''se ha dejado de desarrollar''' en 2017,<ref>{{Cita web|url=https://github.com/torch/torch7#development-status|título=Estado de desarrollo reportado en Febrero de 2018}}</ref> en favor de otras plataformas. La comunidad de soporte de la última versión estable cerró definitivamente en 2019.<ref>{{Cita web|url=https://github.com/torch/torch7#need-help|título=Aviso de cierre de la comunidad de soporte de Torch7}}</ref> Sin embargo Torch se sigue usando para proyectos terminados, e incluso en desarrollos a través de [[PyTorch]]. == torch == El paquete central de Torch es [https://github.com/torch/torch7 torch]. Provee un arreglo flexible N-dimensional o [[Cálculo tensorial|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 <code>max</code>, <code>min</code>, <code>sum</code>, distribuciones estadísticas como [[Distribución uniforme continua|uniforme continua]], [[Distribución normal|normal]] y [[Distribución multinomial|multinomial]], y operaciones [[BLAS]] como [[multiplicación de matrices]]. El siguiente ejemplo usa torch vía su intérprete [[REPL]]: <syntaxhighlight lang="lua"> > 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 </syntaxhighlight> 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 <code>torch.class(classname, parentclass)</code> puede ser usada para crear un [[Factory Method (patrón de diseño)|patrón de diseño]] ([[Clase (informática)|clases]]). Cuando el [[Constructor (informática)|constructor]] es llamado, torch inicializa y una tabla de Lua con la metatabla definida por el usuario, lo cual hace a la tabla un [[Objeto (programación)|objeto]]. 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 <code>read()</code> y <code>write()</code>. == nn == El paquete [https://github.com/torch/nn/blob/master/README.md nn] es usado para construir [[Red neuronal artificial|redes neuronales]]. Está dividido en objetos modulares que comparten una interfaz <code>Module</code> común. Los módulos tienen métodos <code>forward()</code> y <code>backward()</code> que les permiten [[Red neuronal prealimentada|prealimentar]] y [[Propagación hacia atrás|retroalimentar]], respectivamente. Los módulos pueden ser unidos usando [[Composite (patrón de diseño)|composición]] de módulos, como <code>Sequential</code>, <code>Parallel</code> y <code>Concat</code> para crear gráficas complejas a la medida de las tareas. Módulos más simples como <code>Linear</code>, <code>Tanh</code> y <code>Max</code> complementan los módulos componentes básicos. Esta interfaz modular provee [[diferenciación automática]] de primer grado. El siguiente es un ejemplo de caso de uso para construir un [[perceptrón multicapa]] usando módulos: <syntaxhighlight lang="lua"> > 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] </syntaxhighlight> Las [[Función de pérdida|funciones de pérdida]] son implementadas como subclases de <code>Criterion</code>, el cual tiene una interfaz similar a <code>Module</code>. También tiene los métodos <code>forward()</code> y <code>backward</code> para calcular la pérdida y gradientes de propagación hacia atrás, respectivamente. El uso de criterios es de ayuda para entrenar redes neuronales en tareas clásicas. Criterios comunes son el error cuadrático medio implementado en <code>MSECriterion</code> y la entropía cruzada implementada en <code>ClassNLLCriterion</code>. El siguiente ejemplo es una función de Lua que puede ser llamada interativamente para entrena un módulo <code>mlp</code> sobre una Tensor de entrada <code>x</code>, Tensor objetivo <code>y</code> con un escalar <code>learningRate</code>: <syntaxhighlight lang="lua"> 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 </syntaxhighlight> Tiene también la clase <code>StochasticGradient</code> para entrenar una red neuronal usando [[gradiente descendente estocástico]], aunque el paquete Optim provee muchas más opciones a este respecto, como algumos métodos de [[Regularización (matemáticas)|regularización]]. == Otros paquetes == Muchos paquetes además the los paquetes oficiales antes mencionados son usados con Torch. Estos están listado en [https://github.com/torch/torch7/wiki/Cheatsheet 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. == Aplicaciones == Torch es usado por Facebook AI Research Group,<ref>[http://www.kdnuggets.com/2014/02/exclusive-yann-lecun-deep-learning-facebook-ai-lab.html KDnuggets Interview with Yann LeCun, Deep Learning Expert, Director of Facebook AI Lab]</ref> [[IBM]],,<ref>[https://news.ycombinator.com/item?id=7928738 Hacker News]</ref> [[Yandex]]<ref>[https://www.facebook.com/yann.lecun/posts/10152077631217143?comment_id=10152089275552143&offset=0&total_comments=6 Yann Lecun's Facebook Page]</ref> y el [[Instituto de Investigación Idiap]].<ref>[https://www.idiap.ch/scientific-research/resources/torch IDIAP Research Institute : Torch]</ref> Torch ha sido extendido para su uso en [[Android]]<ref>[https://github.com/soumith/torch-android Torch-android GitHub repository]</ref> e [[iOS]].<ref>[https://github.com/clementfarabet/torch-ios Torch-ios GitHub repository]</ref> Ha sido usado para implementaciones construidas en hardware para flujos de datos como aquellos encontrados en redes neuronales.<ref>{{Cita web |url=http://pub.clement.farabet.net/ecvw11.pdf |título=NeuFlow: A Runtime Reconfigurable Dataflow Processor for Vision |fechaacceso=3 de abril de 2017 |urlarchivo=https://web.archive.org/web/20170505184615/http://pub.clement.farabet.net/ecvw11.pdf |fechaarchivo=5 de mayo de 2017 }}</ref> Facebook ha publicado un conjunto de módulos extensiones como software de código abierto.<ref>{{cita web |url=https://www.wired.com/2015/01/facebook-open-sources-trove-ai-tools/ |título=Facebook Open-Sources a Trove of AI Tools |website=[[Wired.com|Wired]] |fecha=16 de enero de 2015}}</ref> == Bibliotecas relacionadas == * [[Deeplearning4j]], una biblioteca código abierto de aprendizaje profundo escrito para [[Java (lenguaje de programación)|Java]] y [[Scala (lenguaje de programación)|Scala]] * [[OpenNN]], una biblioteca código abierto para redes neuronales escrito [[C++]] para aprendizaje profundo. * [[Theano (software)|Theano]], una biblioteca código abierto de aprendizaje profundo para [[Python]]. * [[Keras]], una biblioteca código abierto de aprendizaje profundo para [[Python]]. * PyTorch, una biblioteca código abierto de aprendizaje profundo para [[Python]] y está relacionada con Torch en términos del código C/C++ subyacente. == Referencias == {{listaref}} == Enlaces externos == * {{Official website|http://torch.ch}} * {{cita web |url= https://github.com/torch/torch7 |título= Torch |edición= 7 |obra= Repository |editorial= GitHub }} {{Control de autoridades}} [[Categoría:Software que utiliza la licencia BSD]]
Resumen:
Al guardar los cambios aceptas los
términos de uso
y liberas de forma irrevocable tu contribución conforme a los términos de las licencias
licencia CC BY-SA 4.0
y
GFDL
. Aceptas igualmente que un hipervínculo o URL es atribución suficiente conforme a la licencia Creative Commons.
Cancelar
Ayuda de edición
(se abre en una ventana nueva)
Buscar
Buscar
Edición de «
Torch
»
Añadir idiomas
Añadir tema