토치(기계학습)
Torch (machine learning)![]() | |
원저작자 | 로난 콜로베르, 사미 벤조, 조니 마리엣토즈[1] |
---|---|
초기 릴리즈 | 2002년 10월, [1] | 전(
안정된 릴리스 | 7.0 / 2017년 2월 [2] , 전( |
저장소 | |
기입처 | Lua, LuaJIT, C, CUDA 및 C++ |
운영 체제 | Linux, Android, Mac OS X, iOS |
유형 | 머신러닝 및 딥러닝용 라이브러리 |
면허증. | BSD 라이선스 |
웹 사이트 | torch |
Torch는 오픈 소스 머신 러닝 라이브러리, 과학적 컴퓨팅 프레임워크 및 Lua 프로그래밍 [3]언어에 기반한 스크립트 언어입니다.딥 러닝을 위한 광범위한 알고리즘을 제공하며 스크립트 언어 LuaJ를 사용합니다.IT 및 기반이 되는 C 구현.EPFL의 IDIAP에서 작성되었습니다.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]소프트웨어로 출시했습니다.
「 」를 참조해 주세요.
레퍼런스
- ^ a b "Torch: a modular machine learning software library". 30 October 2002. CiteSeerX 10.1.1.8.9850.
{{cite journal}}
:Cite 저널 요구 사항journal=
(도움말) - ^ Collobert, Ronan. "Torch7". GitHub.
- ^ "Torch7: A Matlab-like Environment for Machine Learning" (PDF). Neural Information Processing Systems. 2011.
- ^ Torch GitHub 저장소 ReadMe
- ^ PyTorch GitHub 저장소
- ^ "Cheatsheet · torch/torch7 Wiki". GitHub.
- ^ KDnuggets Facebook AI Lab 디렉터, 딥 러닝 엑스퍼트 Yann Lecun 인터뷰
- ^ 해커 뉴스
- ^ 얀 레쿤의 페이스북 페이지
- ^ IDIAP 연구소: 횃불
- ^ Torch-Android GitHub 저장소
- ^ Torch-ios GitHub 저장소
- ^ NeuFlow: 런타임 재구성 가능한 비전용 데이터 플로우 프로세서
- ^ "Facebook Open-Sources a Trove of AI Tools". Wired. 16 January 2015.