토치(기계학습)

Torch (machine learning)
횃불
Torch logo
원저작자로난 콜로베르, 사미 벤조, 조니 마리엣토즈[1]
초기 릴리즈2002년 10월, 19년 전(2002-10년)[1]
안정된 릴리스
7.0 / 2017년 2월 27일, 5년 전(2017-02-27)[2]
저장소
기입처Lua, LuaJIT, C, CUDA 및 C++
운영 체제Linux, Android, Mac OS X, iOS
유형머신러닝 딥러닝용 라이브러리
면허증.BSD 라이선스
웹 사이트torch.ch

Torch는 오픈 소스 머신 러닝 라이브러리, 과학적 컴퓨팅 프레임워크 및 Lua 프로그래밍 [3]언어에 기반한 스크립트 언어입니다. 러닝을 위한 광범위한 알고리즘을 제공하며 스크립트 언어 LuaJ를 사용합니다.IT기반이 되는 C 구현.EPFLIDIAP에서 작성되었습니다.2018년을 기점으로 Torch는 더 이상 개발이 [4]진행되지 않습니다.그러나 토치 라이브러리를 기반으로 하는 PyTorch는 2022년 [5]5월 현재 활발하게 개발되고 있다.

횃불

토치의 핵심 패키지는torch유연한 N차원 배열(Tensor)을 제공하여 인덱싱, 슬라이싱, 전치, 타이프 캐스팅, 크기 조정, 저장 및 복제를 위한 기본 루틴을 지원합니다.이 개체는 대부분의 다른 패키지에서 사용되므로 라이브러리의 핵심 개체를 형성합니다.텐서는 또한 다음과 같은 수학적 연산을 지원합니다.max,min,sum, 균일, 정규다항식같은 통계 분포와 점곱, 행렬-벡터 곱셈, 행렬-행렬 곱셈행렬 곱셈과 같은 BLAS 연산입니다.

다음으로 REP 인터프리터를 사용한 토치의 사용 예를 나타냅니다.

> a = 횃불.랜드(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 [횃불.더블텐서  치수 3x4]  > a[1][2] -0.34010116549482   > a:좁은(1,1,2) -0.2381 -0.3401 -1.7844 -0.2615  0.1411  1.6249  0.1708  0.8299 [횃불.더블텐서  치수 2x4]  > a:색인(1, 횃불.롱텐서{1,2}) -0.2381 -0.3401 -1.7844 -0.2615  0.1411  1.6249  0.1708  0.8299 [횃불.더블텐서  치수 2x4]  > a:() -1.7844365427828 

torch패키지는 또한 패키지 전체에 사용되는 다양한 편의 기능을 제공함으로써 객체 지향 프로그래밍시리얼화를 단순화합니다.torch.class(classname, parentclass)함수를 사용하여 객체 팩토리(오브젝트)를 생성할 수 있습니다.생성자를 호출하면 토치가 초기화 및 사용자 정의 메트릭을 사용하여 Lua 테이블을 설정하고 테이블을 객체로 만듭니다.

토치 팩토리로 작성된 오브젝트에는 Lua coroutines 및 Lua 사용자 데이터와 같이 시리얼화할 수 없는 오브젝트에 대한 참조가 포함되지 않는 한 시리얼화할 수도 있습니다.단, 사용자 데이터는 다음 기능을 제공하는 테이블(또는 측정 가능)로 둘러싸인 경우 시리얼화할 수 있습니다.read()그리고.write()방법들.

하지 않다

nn패키지는 뉴럴 네트워크 구축에 사용됩니다.공통점을 공유하는 모듈러 오브젝트로 분할됩니다.Module인터페이스입니다.모듈에는forward()그리고.backward()각각 피드포워드백프로그래피를 가능하게 하는 방법.모듈 컴포지트를 사용하여 모듈을 결합할 수 있습니다.Sequential,Parallel그리고.Concat복잡한 태스크 분산 그래프를 만듭니다.다음과 같은 단순한 모듈Linear,Tanh그리고.Max기본 컴포넌트 모듈을 구성합니다.이 모듈러 인터페이스는 1차 자동 구배 차별화를 제공합니다.다음으로 모듈을 사용하여 멀티레이어 퍼셉트론을 구축하기 위한 사용 예를 나타냅니다.

> mlp = 하지 않다.시퀀셜() > mlp:더하다( 하지 않다.선형(10, 25) ) -- 10개의 입력, 25개의 숨겨진 유닛 > mlp:더하다( 하지 않다.탄구() ) -- 어떤 쌍곡선 접선 전송 함수 > mlp:더하다( 하지 않다.선형(25, 1) ) -- 1 출력 > =mlp:앞으로(횃불.랜드(10)) -0.1815 [횃불.텐서  치수 1] 

손실 함수는 다음 서브클래스로 구현됩니다.Criterion와 같은 인터페이스를 가지고 있습니다.Module.또한마디로forward()그리고.backward()손실 계산 방법 및 역전파 구배 계산 방법.기준은 고전적인 작업에 대한 신경망을 훈련하는 데 도움이 된다.일반적인 기준은 에서 구현되는 평균 제곱 오차 기준입니다.MSECriterion및 에서 구현된 교차기준ClassNLLCriterion다음에 나오는 것은 반복 호출할 수 있는 Lua 함수의 예입니다.mlp입력 텐서의 모듈x, 대상 텐서y스칼라로learningRate:

기능. grad 업데이트(mlp, x, y, 학습 속도)   현지의 기준 = 하지 않다.클래스 NLLCriterion()   프리드 = mlp:앞으로(x)   현지의 에러 = 기준:앞으로(프리드, y);    mlp:0 Grad 파라미터();   현지의 t = 기준:뒤로(프리드, y);   mlp:뒤로(x, t);   mlp:update 파라미터(학습 속도); 끝. 

또,StochasticGradient확률적 경사 강하를 사용하여 신경 네트워크를 훈련하기 위한 클래스, 하지만optim패키지는 운동량 및 중량 감쇠 정규화 등 이 점에서 훨씬 더 많은 옵션을 제공합니다.

기타 패키지

Torch에는 상기 공식 패키지 이외의 패키지가 많이 사용되고 있습니다.이것들은 토치치시트에 [6]기재되어 있습니다.이러한 추가 패키지는 병렬 처리, 비동기 입출력, 이미지 처리 등과 같은 광범위한 유틸리티를 제공합니다.Torch 배포에 포함된 Lua 패키지 매니저인 LuaRocks와 함께 설치할 수 있습니다.

적용들

토치는 Facebook [7]AI Research Group, IBM,[8] Yandex[9], Idiap Research [10]Institute에서 사용합니다.Android 및 [12]iOS에서 사용[11] 수 있도록 Torch가 확장되었습니다.뉴럴 네트워크에서 [13]볼 수 있는 것과 같은 데이터 흐름을 위한 하드웨어 구현을 구축하는 데 사용되어 왔습니다.

페이스북은 일련의 확장 모듈을 오픈 소스 [14]소프트웨어로 출시했습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b "Torch: a modular machine learning software library". 30 October 2002. CiteSeerX 10.1.1.8.9850. {{cite journal}}:Cite 저널 요구 사항 journal=(도움말)
  2. ^ Collobert, Ronan. "Torch7". GitHub.
  3. ^ "Torch7: A Matlab-like Environment for Machine Learning" (PDF). Neural Information Processing Systems. 2011.
  4. ^ Torch GitHub 저장소 ReadMe
  5. ^ PyTorch GitHub 저장소
  6. ^ "Cheatsheet · torch/torch7 Wiki". GitHub.
  7. ^ KDnuggets Facebook AI Lab 디렉터, 딥 러닝 엑스퍼트 Yann Lecun 인터뷰
  8. ^ 해커 뉴스
  9. ^ 얀 레쿤의 페이스북 페이지
  10. ^ IDIAP 연구소: 횃불
  11. ^ Torch-Android GitHub 저장소
  12. ^ Torch-ios GitHub 저장소
  13. ^ NeuFlow: 런타임 재구성 가능한 비전용 데이터 플로우 프로세서
  14. ^ "Facebook Open-Sources a Trove of AI Tools". Wired. 16 January 2015.

외부 링크