Torch – це науково-обчислювальний фреймворк з широкою підтримкою алгоритмів машинного навчання, заснованих на мові програмування Lua [Torch]. Він активно розвивається з 2002 року. Оригінальними авторами є Ронан Коллоберт, Корай Кавуккуоглу та Клемент Фарабет [Collobert 2002].
Torch був розроблений з використанням об’єктно-орієнтованої парадигми та реалізований на мові C ++. В даний час його API також написаний мовою Lua (Lua – це мультипарадигмальна мова сценаріїв, створена в 1993 р. Р. Лерусалімскі, Л. де Фігейредо та У. Селесом в університеті Ріо-де-Жанейро). Мова Lua використовується як обгортка для оптимізованого коду C / C ++ та CUDA. Його ядро складається з тензорної бібліотеки, яка відтримує як процесори(CPU), так і графічні процесори(GPU). Поточна версія Torch7, бібліотека Tensor забезпечує безліч класичних операцій (включаючи операції з лінійної алгебри), ефективно реалізованих в C, з використанням інструкцій SSE на платформах Intel. Також існує можливість прив’язування операцій лінійної алгебри до існуючих ефективних реалізацій BLAS / Lapack (як Intel MKL) [Collobert 2011 р.]. Фреймворк підтримує паралелізм на багатоядерних процесорах через OpenMP та на GPU через CUDA. Він орієнтований на широкомасштабне навчання (мовленнєві, графічні та відео застосування) і піддтримує навчання з вчителем, навчання без вчителя, навчання з підкріпленням, нейронні мережі, оптимізацію, графічні моделі та обробку зображень. Torch підтримується і використовується Facebook, Google, DeepMind, Twitter та багатьма іншими організаціями. Фреймворк знаходиться у вільному доступі за ліцензією BSD.
Сильні сторони:
Гнучкість, читабельність, код середнього рівня, а також високого рівня (Lua), легке повторне використання коду.
Модульність і швидкість.
Дуже зручний для дослідження.
Слабкі сторони:
Ще менша частка проектів, ніж в Caffe.
LuaJIT не є широко використовуваним, тому можуть виникнути проблеми з інтреграцією, також мова Lua не користується популярністю, хоча її досить легко вивчити.