Torch7 따라 해 보기

2018.02.19 01:16

졸리운_곰 조회 수:20

Torch7 따라 해 보기

요새 딥러닝툴 소개를 보다보면, 스스로 알고리즘을 익혀서 날코딩(!) 하시는 분들 빼고는, 여기 소개된 pylearn2(파이썬),  Caffe(C++, 파이썬 래핑), deeplearning4j(자바), 그리고 Torch7(루아)라는 라이브러리들을 주로 만나게 될겁니다. 이 중 자바는 제가 전에 한번 안드로이드앱을 개발해 보느라 건드려봤는데, 그 때 경험으로 다른 대안이 있으면 가급적 쓰지 않기로 했으므로 패스. 

 

루아는 언어 자체가 워낙 생소해서 지금까지는 쳐다 볼 생각을 안하다가, 어디선가 읽은 기사 중에 Torch 개발자가 바로 구글에 4억불에 인수된 딥마인드에서 일하고 있다는 내용을 보게되면서 흥미가 생기더군요. "아니, 딥마인드는 우선 사장 (데미스 하사비스) 자체가 워낙 천재로 소문이 나있던 양반이란 얘기는 들었는데, PyBrain 개발자와 Torch 개발자를 다 데리고 있었다고 ?! 오케, 한번 구경이나 해보자."

 

아시겠지만, 저는 사용자(엔드유저) 프로그래밍을 추구하기 때문에 언어의 깊은 곳에는 관심이 없습니다... 조건문, 루프 정도만 이해하고 그 언어환경의 프레임웍이랄까, 주요 라이브러리만 잘 이해하면 제가 원하는 결과를 거의 다 얻을 수 있더라는 경험이 몇번 있기도 하고, 제 관심이 오로지 제 데이터를 가능한 유의미하게 분석해 줄 툴을 찾는데 있기 때문에 남들보다는 좀 쉽게 들이대는 편이지요 !

 

오늘 하루 대충 드려다 본 결론은, 쿨~ 입니다. 처음 인스톨할 때 보면 엄청 까는게 많아서 좀 복잡해 지려나 했더니, 기특하게도 CUDA툴도 알아서 다 깔아주는군여 ! 인터페이스는 옛날 도스 생각이 날 정도로 황량한 커맨드라인인데, 안에서 돌아가는 메커니즘이나 보조 툴, 라이브러리들이 거의 최첨단인거 같네요 ! 아주 깔끔하고 스마트한 미니멀리즘 지향인듯. 

 

참고한 사이트는 Torch의 GitHub 페이지입니다. 한번 시행착오를 겪었던 것이, torch-rocks나 torch-pkg라는 배포 패키지를 사용하는 버전은 피하는게 좋을거 같더군요. 아마 Lua 패키지보다 더 잘할 수 있다고 생각한 냥반들이 따로 패키지를 만든거 같은데, 저도 처음 발견한걸 썼다가 금방 다 지우고 다시 깔게 되더군요.

 

저는 우분투 14.04 데스크탑 버전을 쓰고 있습니다. 위에 안내된 대로 :

 

curl -sk https://raw.githubusercontent.com/torch/ezinstall/master/install-deps | bash
curl -sk https://raw.githubusercontent.com/torch/ezinstall/master/install-luajit+torch | bash
luarocks install env

 

차례로 (제 경우는 sudo로 깔았슴) 실행해 주면 기본 루아환경과 Torch환경이 필요한 디펜던시를 다 갖추고 설치됩니다.
플롯팅을 쓸 경우가 꽤 많은데 Torch는 특이하게도 nodejs가 제공하는 브라우저환경에서 실행되는 GFX.js란걸 쓰더군요.
얘 설치도 위와 마찬가지로 쉽습니다.


apt-get install libgraphicsmagick1-dev  

apt-get install graphicsmagick  

luarocks install https://raw.github.com/clementfarabet/gfx.js/master/gfx.js-scm-0.rockspec

이제 튜토리얼에 나온대로 한번 실행해 보도록 하지요. gfx를 띄우고 torch를 실행시킨다는 의미로 :

th -lgfx.go



도스 같다는 말이 무슨 말인지 이해가 되시지여 !!
샘플로는 컴퓨터비전 업계에서 유명하다는 레나의 사진을 띄워봅니다.

> i = image.lena()
> gfx.image(i)



그리고 다음과 같이 차례로 입력해 봅니다.

> require 'nn'
> n = nn.SpatialConvolution(1,64,16,16)  

> gfx.image(n.weight, {zoom=2, legend=''})

 

 

nn은 Torch가 쓰는 대표적인 NeuralNetwork모듈이고, "SpatialConvolution"을 API문서에서 찾아보면, 


module = nn.SpatialConvolution(nInputPlane, nOutputPlane, kW, kH, [dW], [dH])

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

Applies a 2D convolution over an input image composed of several input planes.

 

라고 나와있네요. 이미지 분류 예제이니까 이건 데이터셋을 학습시키기 위해 쓰는 16x16크기의 64개 필터를 주고,

그 만들어진 네트웍의 필터별 "weight"를 그림으로 뿌려준거 같습니다. 물론 학습을 하기 전이므로 거의 카오스  

상태인걸 볼 수 있지요. 또 다른 커맨드를 입력해 보지요.

> n = nn.SpatialConvolution(1,16,12,12)  

> res = n:forward(image.rgb2y(image.lena()))  

> gfx.image(res, {zoom=0.25, legend='states'})



 

역시 위와 마찬가지로 "SpatialConvolution"모듈을 쓰고 있지만 한 단계가 더 눈에 띕니다. 그 네트웍을 forward

시킨 상태의 그림을 뿌려주고 있는 걸로 보이네요. forward란 메서드를 찾아봤더니, 


forward(input) which computes the output of the module given the input Tensor.

 

어려운 얘기네요...  

 

어차피 저도 상당기간 '학습'을 해야하는데, 다른 툴들은 프로페셔널하게, 딥러닝계에서 "최고의" 성적, 실적을 내기위해 이미 성능에 최적화된, 스터디하기에는 좀 어려운 점이 있는 반면에 Torch는, 물론 업계에서도 많이들 쓴다고 하지만, 압도적으로 전공 학생들이 많이 쓰는 툴이라 접근이 용이한 장점이 있어 보입니다. 뭐 다들 상용이 아니라 문서 부분이 많이 취약한건 다 마찬가지구요 ! 일단 학습용으로는 저한테 제일 맞는거 아닌가 싶은 생각이 드네요. 다음 번엔 맛배기 수준을 넘는 실전예제를 한번 돌려보기로 하지요. 

 

[출처] Torch7 따라 해 보기|작성자 함지

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
1195 [ 一日30分 인생승리의 학습법] VBA Web Scraping: How Can VBA Be Used To Scrape Website Data? file 졸리운_곰 2024.04.13 3
1194 [ 一日30分 인생승리의 학습법] 윈도우 실행파일 구조(PE파일) file 졸리운_곰 2024.03.31 3
1193 [ 一日30分 인생승리의 학습법] [Analysis] PE(Portable Executable) 파일 포맷 공부 file 졸리운_곰 2024.03.31 3
1192 [ 一日30分 인생승리의 학습법] 성공하는 메타버스의 3가지 조건 file 졸리운_곰 2024.03.30 7
1191 [ 一日30分 인생승리의 학습법] REST, REST API, RESTful 과 HATEOAS file 졸리운_곰 2024.03.10 9
1190 [ 一日30分 인생승리의 학습법] 렌더링 삼형제 CSR, SSR, SSG 이해하기 file 졸리운_곰 2024.03.10 2
1189 [ 一日30分 인생승리의 학습법] 엑셀 VBA에서 셀레니움 사용을 위한 Selenium Basic 설치 file 졸리운_곰 2024.02.23 11
1188 [ 一日30分 인생승리의 학습법]500 Lines or Less Blockcode: A Visual Programming Toolkit : 500줄 이하의 블록코드: 시각적 프로그래밍 툴킷 졸리운_곰 2024.02.12 4
1187 [ 一日30分 인생승리의 학습법] 구글 클라이언트(앱) 아이디를 발급받으려면 어떻게 해야 하나요? 졸리운_곰 2024.01.28 3
1186 [ 一日30分 인생승리의 학습법] 빅뱅 프로젝트를 성공적으로 오픈하기 위한 팁 졸리운_곰 2023.12.27 16
1185 [ 一日30分 인생승리의 학습법]“빅뱅 전환보다 단계적 전환 방식이 이상적 애자일팀과 협업 쉽게 체질 개선을” file 졸리운_곰 2023.12.27 12
1184 [ 一日30分 인생승리의 학습법] Big-bang / phased 접근 file 졸리운_곰 2023.12.27 3
1183 [ 一日30分 인생승리의 학습법] CodeDragon 메뉴 데이터 전환의 개념 이해 - 데이터 전환의 개념, 데이터 전환방식, 데이터 전환방식 및 장단점 비교, 데이터전환 이후 검토해야 할 사항 졸리운_곰 2023.12.27 5
1182 [ 一日30分 인생승리의 학습법] 블록체인과 IPFS를 이용한 안전한 데이터 공유 플랫폼 - 분쟁 해결 시스템 file 졸리운_곰 2023.12.27 6
1181 [ 一日30分 인생승리의 학습법] 블록체인과 IPFS를 이용한 안전한 데이터 공유 플랫폼 - 개념과 리뷰 시스템 file 졸리운_곰 2023.12.27 4
1180 [ 一日30分 인생승리의 학습법] 소켓 CLOSE_WAIT 발생 현상 및 처리 방안 file 졸리운_곰 2023.12.03 7
1179 [ 一日30分 인생승리의 학습법] robots 설정하기 졸리운_곰 2023.12.03 3
1178 [ 一日30分 인생승리의 학습법] A Tutorial and Elementary Trajectory Model for the Differential Steering System of Robot Wheel Actuators : 로봇 휠 액츄에이터의 차동 조향 시스템에 대한 튜토리얼 및 기본 궤적 모델 file 졸리운_곰 2023.11.29 6
1177 [ 一日30分 인생승리의 학습법] Streamline Your MLOps Journey with CodeProject.AI Server : CodeProject.AI 서버로 MLOps 여정을 간소화하세요 file 졸리운_곰 2023.11.25 2
1176 [ 一日30分 인생승리의 학습법] Comparing Self-Hosted AI Servers: A Guide for Developers / : 자체 호스팅 AI 서버 비교: 개발자를 위한 가이드 file 졸리운_곰 2023.11.25 10
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED