1. 程式人生 > >機器學習開源框架系列:Torch:1:簡介與安裝

機器學習開源框架系列:Torch:1:簡介與安裝

這裡寫圖片描述
Torch是一個基於BSD License的開源的機器學習的框架,早在2002年就釋出了Torch的初版。Torch一直聚焦於大規模的機器學習應用,尤其是影象或者視訊應用等領域,在超過5萬次的下載,在學校和企業中也有著不小的影響力,而Torch7希望能夠做到像Matlab那樣,為機器學習提供環境。

基本資訊

專案 說明
開源/閉源 開源
License類別 BSD License
開發語言 C,Lua
支援平臺 由於使用C和Lua,Torch可以支援多種作業系統諸如Linux/MacOSX/iOS/Android等
當前版本 7.0 (2017/02/27)

功能特色

Torch的目標在保證使用的方式非常簡單的基礎上最大化地保證演算法的靈活性和速度。Torch的核心是流行的神經網路和簡單易用的優化庫,使用Torch能在實現複雜的神經網路拓撲結構的時候保持最大的靈活性,同時可以使用並行的方式對CPU和GPU進行更有效率的操作。在LuaJIT/C/CUDA等基礎之上,Torch的主要特性如下:

  • 強大的N維陣列操作的支援
  • 提供很多對於索引/切片等的常用操作
  • 常見線性代數計算的支援
  • 神經網路和基於能量的模型
  • 支援GPU計算
  • 可嵌入,可移植到iOS或者Android

Torch與Lua

Lua在Torch中扮演了一個重要角色,Torch認為LuaJIT是那個“合適的指令碼語言”,LuaJIT的優勢如下

  • 快速,並且擁有一個透明的JIT編譯器
  • 像Python一樣簡單而且可讀
  • 和C語言的介面非常乾淨和簡單
  • 可嵌入到任何環境中,比如iphone的引用,視訊遊戲或者web後端等

Lua vs Python

為什麼不使用Python而使用LuaJIT,Torch給出的理由是:

  • 糾結於速度和效率,而超級輕量級的LuaJIT則不會在這方面礙手礙腳
  • 希望整個Torch框架是自包含的
  • 希望能更容易地將程式碼移植到任何平臺,比如移植到iphone上而不需要修改已經寫好的指令碼
  • 希望有更容易的擴充套件性,LuaJIT的FFI介面是最容易學習的方式之一。

整體來說,這些點LuaJIT都更好地適應Torch,所以選擇了LuaJIT

關於如何快速上手Lua,可以參看如下文章,快速Catchup

安裝部署

下載install-all指令碼

[[email protected] ~]# wget  https://raw.githubusercontent.com/torch/ezinstall/master/install-all
...省略
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.0.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2096 (2.0K) [text/plain]
Saving to: ‘install-all’
...省略
[[email protected] ~]#

使用指令碼進行安裝

無需其他,只需保證網路能夠連線正常,等待結束即可完成安裝

[[email protected] ~]# sh install-all 
INFO: Preparing to install dependencies...
...省略
Total download size: 104 M
...省略
  Verifying  : libstdc++-4.8.5-16.el7.x86_64                                                                                    122/122 
Installed:
...省略
  Verifying  : libdv-1.0.0-17.el7.x86_64                                                                                          49/49 

Installed:
  python-ipython.noarch 0:3.2.1-1.el7                                                                                                   
...省略
Cloning into 'OpenBLAS'...
...省略
make -j 2 -C test all
...省略
TEST 22/22 potrf:bug_695 [OK]
RESULTS: 22 tests (22 ok, 0 failed, 0 skipped) ran in 0 ms
...省略
 OpenBLAS build complete. (BLAS CBLAS LAPACK LAPACKE)
  OS               ... Linux             
  Architecture     ... x86_64               
  BINARY           ... 64bit                 
  C compiler       ... GCC  (command line : cc)
  Fortran compiler ... GFORTRAN  (command line : gfortran)
  Library Name     ... libopenblas_haswellp-r0.3.0.dev.a (Multi threaded; Max num-threads is 2)
...省略
==> Torch7's dependencies have been installed
INFO: Dependencies installed successfully.
INFO: Preparing to install torch...
Installing Torch into: /usr/local
Cloning into 'luajit-rocks'...
...省略
Already on 'master'
Already up-to-date.
-- The C compiler identification is GNU 4.8.5
-- The CXX compiler identification is GNU 4.8.5
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
...省略
Install the project...
-- Install configuration: "Release"
-- Installing: /usr/local/include/luaconf.h
-- Installing: /usr/local/include/lua.h
-- Installing: /usr/local/include/lauxlib.h
-- Installing: /usr/local/include/lualib.h
-- Installing: /usr/local/include/lua.hpp
-- Installing: /usr/local/include/luajit.h
-- Installing: /usr/local/lib/libluajit.so
-- Installing: /usr/local/bin/luajit
...省略
-- Installing: /usr/local/etc/luarocks/config.lua
-- Installing: /usr/local/bin/luarocks
-- Installing: /usr/local/bin/luarocks-admin
...省略
Cloning into 'sundown-ffi'...
...省略
Cloning into 'cwrap'...
r...省略
Cloning into 'paths'...
...省略
Install the project...
-- Install configuration: "Release"
-- Installing: /usr/local/lib/luarocks/rocks/paths/scm-1/lua/paths/init.lua
...省略
Cloning into 'torch7'...
...省略
[100%] Built target torch
cd build && make install
[ 55%] Built target TH
[ 58%] Built target luaT
[100%] Built target torch
Install the project...
-- Install configuration: "Release"
-- Installing: /usr/local/share/cmake/torch/TorchExports.cmake
...省略
-- Installing: /usr/local/lib/libTH.so.0
-- Installing: /usr/local/lib/libTH.so
...省略
-- Installing: /usr/local/include/TH/THTensor.h
-- Installing: /usr/local/include/TH/THTensorApply.h
-- Installing: /usr/local/include/TH/THTensorDimApply.h
-- Installing: /usr/local/include/TH/THTensorMacros.h
-- Installing: /usr/local/include/TH/THVector.h
...省略
Cloning into 'luaffifb'...
...省略
Cloning into 'nn'...
...省略
[100%] Building C object lib/THNN/CMakeFiles/THNN.dir/init.c.o
Linking C shared module libTHNN.so
[100%] Built target THNN
cd build && make install
[100%] Built target THNN
Install the project...
-- Install configuration: "Release"
...省略
-- Installing: /usr/local/lib/luarocks/rocks/nn/scm-1/lib/libTHNN.so
-- Set runtime path of "/usr/local/lib/luarocks/rocks/nn/scm-1/lib/libTHNN.so" to "$ORIGIN/../lib:/usr/local/lib:/opt/OpenBLAS/lib"
-- Installing: /usr/local/include/THNN/THNN.h
-- Installing: /usr/local/include/THNN/generic/THNN.h
...省略
Cloning into 'dok'...
...省略
Cloning into 'gnuplot'...
...省略
Cloning into 'qtlua'...
...省略
Cloning into 'qttorch'...
...省略
Cloning into 'sys'...
...省略
Cloning into 'image'...
...省略
Cloning into 'optim'...
...省略
Cloning into 'trepl'...
...省略
=> Torch7 has been installed successfully

  + Extra packages have been installed as well:
     $ luarocks list

  + To install more packages, do:
     $ luarocks search --all
     $ luarocks install PKG_NAME
...省略
  + packages installed:
    - sundown   :  ok
    - cwrap     :  ok
    - paths     :  ok
    - torch     :  ok
    - nn        :  ok
    - dok       :  ok
    - gnuplot   :  ok
    - qtlua     :  ok
    - qttorch   :  ok
    - lfs       :  ok
    - penlight  :  ok
    - sys       :  ok
    - xlua      :  ok
    - image     :  ok
    - optim     :  ok
    - cjson     :  ok
    - trepl     :  ok

INFO: Torch installed successfully.
[[email protected] ~]#

刪除指令碼

安裝確認

確認luagit

Torch7希望自己是自包含的,這裡面luagit起到了一個重要作用,luajit會同時一同被安裝,所以需要進行確認

[[email protected] ~]# which luajit
/usr/local/bin/luajit
[[email protected] ~]# luajit -v
LuaJIT 2.0.4 -- Copyright (C) 2005-2017 Mike Pall. http://luajit.org/

 _____              _     
|_   _|            | |    
  | | ___  _ __ ___| |__  
  | |/ _ \| '__/ __| '_ \ 
  | | (_) | | | (__| | | |
  \_/\___/|_|  \___|_| |_|

[[email protected] ~]# 

使用此版本的luajit進行動作確認

[[email protected] ~]# luajit
LuaJIT 2.0.4 -- Copyright (C) 2005-2017 Mike Pall. http://luajit.org/

 _____              _     
|_   _|            | |    
  | | ___  _ __ ___| |__  
  | |/ _ \| '__/ __| '_ \ 
  | | (_) | | | (__| | | |
  \_/\___/|_|  \___|_| |_|

JIT: ON CMOV SSE2 SSE3 SSE4.1 fold cse dce fwd dse narrow loop abc sink fuse
> print "Hello World"
Hello World
> 

可以看到Torch7下的luajit確實很小

[root@devops ~]# du -k /usr/local/bin/luajit
648 /usr/local/bin/luajit
[root@devops ~]#

確認luarocks

除此之外,luarocks作為Lua的包管理的工具也非常重要,確認其版本以及是否能夠進行正常操作,後續會通過luarocks install來安裝所需的依賴

[[email protected] ~]# luarocks
LuaRocks 2.3.0, a module deployment system for Lua
...省略
CONFIGURATION
    Lua version: 5.1
    Configuration files:
        System: /usr/local/etc/luarocks/config.lua (ok)
        User  : /root/.luarocks/config-5.1.lua (not found)
...省略
[[email protected] ~]# luarocks list  nn
...省略
nn
   scm-1 (installed) - /usr/local/lib/luarocks/rocks
[[email protected] ~]# 

確認th

Torch可以通過互動式的th進行操作,確認其是否能夠正常進入

[root@devops ~]# th

  ______             __   |  Torch7 
 /_  __/__  ________/ /   |  Scientific computing for Lua. 
  / / / _ \/ __/ __/ _ \  |  Type ? for help 
 /_/  \___/_/  \__/_//_/  |  https://github.com/torch 
                          |  http://torch.ch 

th>

總結

這篇文章介紹了Torch的概要資訊,以及如何在centos7上安裝最新版本的torch7.

相關推薦

機器學習開源框架系列Torch1簡介安裝

Torch是一個基於BSD License的開源的機器學習的框架,早在2002年就釋出了Torch的初版。Torch一直聚焦於大規模的機器學習應用,尤其是影象或者視訊應用等領域,在超過5萬次的下載,在學校和企業中也有著不小的影響力,而Torch7希望能夠做到

深度學習開源框架系列基礎演算法之傅立葉變換1概要介紹

傅立葉變換時數字訊號處理的重要方法之一,是法國數學家傅立葉在1807年在法國科學學會上發表的一篇文章中所提出的,在文章中使用了正弦函式描述溫度分佈,而且提出了一個著名的論斷:任何連續性的週期訊號都可以由一組適當的正弦曲線組合而成。而這個論斷被當時審查論文的著名數

年度大盤點機器學習開源專案及框架

我們先來看看Mybridge AI 中排名靠前的頂級開源專案,再聊聊機器學習今年都有哪些發展,最後探尋下新的一年中會有哪些有值得我們期待的事情。 頂級的開源專案 BERT BERT,全稱為Bidirectional Encoder Representations from

機器學習導圖系列1數據處理

探索 com machine 數學 選擇 機器學習算法 png 壓縮 網絡 機器學習導圖系列教程旨在幫助引導開發者對機器學習知識網絡有一個系統的概念,其中具體釋義並未完善,需要開發者自己探索才能對具體知識有深入的掌握。本項目靈感來自Daniel Formoso的github

機器學習導圖系列(3)過程

系統 成了 ron 結果 git 高清 一個 網絡模型 模型 機器學習導圖系列教程旨在幫助引導開發者對機器學習知識網絡有一個系統的概念,其中有些具體釋義並未完善,需要開發者自己探索才能對具體知識有深入的掌握。本項目靈感來自Daniel Formoso的github開源項目。

機器學習導圖系列(4)算法(含61公式)

ref 靈感 深入 作者 很多 機器 -c 導圖 tar 機器學習導圖系列教程旨在幫助引導開發者對機器學習知識網絡有一個系統的概念,其中有些具體釋義並未完善,需要開發者自己探索才能對具體知識有深入的掌握。本項目靈感來自Daniel Formoso的github開源項目。本文

開源框架那點事兒19》特斯拉建“樁”開源的生命力

充電站 otto 期權 eas gb2 平臺 程序 蘋果 名詞 在美國的矽谷,在中國的中關村,很多的技術先驅者懷揣夢想。用激情不懈地追求著他們宏遠的目標和巨大的個人財富。開源。正在成為這個時代眼下最火熱的名詞之中的一個。開源精神,作為一種合作協同的驅動力,正在發展為一種更

開源框架那點事兒25》框架模板引擎實現方式的改造實錄

port 內嵌 代碼調試 iter put 文件路徑 children nts fault 點滴悟透設計思想,Tiny模板引擎優化實錄! 增加框架設計興趣小組:http://bbs.tinygroup.org/group-113-1.html Tiny模板引擎的實

機器學習筆記 -吳恩達(第一章緒論)

0.機器學習定義   一個程式由經驗E中學習,解決任務T,達到效能度量值P,當且僅當,有了經驗值E後,經過P的評判,程式在處理T的時候經驗有所提升。 1.機器學習運用領域:         資料探勘

機器學習——鄒博程式碼的復現第一節Python基礎講解

以下所有的函式的程式碼本人親自驗證了都是可以產生正確的結果的。請記得呼叫函式就可以得到影象 #-*- coding:utf-8 _*- """ @author:24626 @file: 整理程式碼一.py @time: 2018/12/{DAY} """ #匯入必要的包檔案 import n

機器學習在美團配送系統的實踐用技術還原真實世界

在2018 AI開發者大會(AI NEXTCon)上,美團配送AI方向負責人何仁清,分享了美團在即時配送領域中機器學習技術的最新進展,以及如何通過大資料和機器學習手段,建立對線下真實世界各種場景的感知能力,還原並預測配送過程各個細節,從而提升整體配送系統的精度。 美團“超腦”配送系統的由來 2014年,斯

機器學習大神邁克爾 · 喬丹我討厭將機器學習稱為AI

AI技術年度盛會即將開啟!11月8-9日,來自Google、Amazon、微軟、Facebook、LinkedIn、阿里巴巴、百度、騰訊、美團、京東、小米、位元組跳動、滴滴、商湯、曠視、思必馳、第四正規化、雲知聲等企業的技術大咖將帶來工業界AI應用的最新思維。 如果你是某

機器學習入坑指南(十一)卷積神經網路

上一篇文章中,我們準備好了深度學習所需的資料。為了實現分辨貓狗的目的,我們決定使用卷積神經網路(Convolutional Neural Networks,CNN),目前它在影象識別方面十分受歡迎,那麼到底什麼是卷積神經網路呢?我們應該怎麼去理解它? 1 CNN

python的sklearn機器學習SVM中的NuSVC執行報錯ValueError: b'specified nu is infeasible'

早上在使用NuSVC進行模型訓練的時候,報錯如下 Reloaded modules: __mp_main__ Traceback (most recent call last): File "<ipython-input-2-c95a09e8e532>", line 1

機器學習】兩分佈間距離的度量MMD、KL散度、Wasserstein 對比

MMD:最大均值差異 Wasserstein距離[1]   實驗 資料來源 Amazon review benchmark dataset. The Amazon review dataset is one of the most widely used b

機器學習中的矩陣方法(附錄A) 病態矩陣條件數

1. 病態系統 現在有線性系統: Ax = b, 解方程 很容易得到解為: x1 = -100, x2 = -200. 如果在樣本採集時存在一個微小的誤差,比如,將 A 矩陣的係數 400 改變成 401: 則得到一個截然不同的解: x1 = 40000, x2 = 79800. 當解集

開源框架那點事兒23》採用TinyDB元件方式開發

採用TinyDB元件方式開發 步驟 Icon 前文介紹四則運算的流程程式設計開發時,說過流程編排在開發重複功能時,可以利用已有的元件庫快速開發。對於開發人員而言只需要簡單配置流程就可以完成工作了。 開發增刪改查的元件介面。本來這部分很花費時間,如果採用元件複用的話,就可以實現

一文盤點近期熱門機器學習開源專案!(研究框架、AutoML庫、深度學習...)

授權自AI科技大本營(ID:rgznai100)本文共1029字,建議閱讀5分鐘。本文為你從過去

機器學習實戰】製作五子棋AI之四基本規則的建立【2】

在上一次,我們建立了棋盤的狀態類GameStatus,用來存取和顯示每一步走完後的棋盤上黑白子的狀態。想一想,為了像真實的五子棋遊戲一樣執行,還缺了遊戲勝負的判定,那麼我們定義一個函式對遊戲勝負進行判斷。 def check_win(black,white

開源框架那點事兒23》Tiny模板語言(VelocityPlus)初步入門

1 關於使用者手冊 本文主要介紹如何在模板中使用Tiny模板語言,通過查閱本手冊,可以對Tiny模板語言 TTL(Tiny Template Language)的用法有一個較全面的認識,並學會如何有效地使用Tiny模板語言。同時,本文提供了較多的例子幫您來學習並掌握它。