728x90
반응형

 

 

 

 

한빛미디어에서 "파이토치 첫걸음" 책이 출간되었다. 한빛미디어의 첫걸음 시리즈는 다 접해봤는데, 핵심 내용만 쉽게 담아냈기 때문에 책이 얇아서 들고다니면서 가볍게 읽을 수 있다는 장점이 있다. 

 

한빛미디어의 첫걸음 시리즈는 다음과 같다. 

  • 파이토치 첫걸음
  • 강화학습 첫걸음
  • 신경망 첫걸음
  • 딥러닝 첫걸음
  • 텐서플로 첫걸음

파이토치, 강화학습, 신경망, 딥러닝, 텐서플로우에 대한 기본 지식만 꼼꼼히 갖추고 있다면 인공지능 전문가로 발돋움 할 수 있는 첫걸음이 될 것이다. 

 

파이토치(Pytorch)는 페이스북 인공지능 연구팀에서 만든 프레임워크이며, 파이토치의 전신인 토치(Torch)는 루아 프로그래밍 언어로 되어있지만, 파이토치는 파이썬(Python)으로 작성되어 파이썬의 언어 특징을 품고있다. 파이토치 공식 사이트는 다음과 같다. 

 

http://pytorch.org 

 

PyTorch

An open source deep learning platform that provides a seamless path from research prototyping to production deployment.

pytorch.org

파이토치 첫걸음 책에서는 텐서플로우와 파이토치의 차이점을 비교하고 있었다. 텐서플로우와 파이토치는 둘 다 연산에 GPU 를 사용하는 프레임워크이다. 하지만 텐서플로우는 연산 그래프를 먼저 생성하고 실제 연산할 때 값을 전달하여 결과를 얻는 "Define and Run" 방식이고, 파이토치는 그래프를 만듦과 동시에 결과를 얻는 "Define by Run" 방식이라고 한다. 

 

사실 텐서플로우가 1년 정도 먼저 딥러닝이 뜨기 시작할 때 발표되었기 때문에 사용자 수는 물론이고 커뮤니티도 완전히 활성화 되어있다. 이에 비해 파이토치는 뒤늦게 텐서플로우보다 좋은 점이 사람들에게 알려지고 있어서 이제 막 뜨기 시작한 프레임워크라고 할 수 있다.

 

텐서플로우와 파이토치를 모두 사용해 본 결과, 파이토치는 학습 중간중간에 결과를 확인 할 수 있어서 편리하다는 장점을 가진다. 물론 연산속도 측면에서도 실험에 많이 사용되는 모델로 벤치마킹 한 결과 파이토치가 텐서플로우보다 2.5배 빠른 결과가 나왔다고 한다. 필자도 실제로 같은 모델을 파이토치와 텐서플로우로 각각 실행했을 때 이미지 1장을 처리하는 Inference Time 이 파이토치가 텐서플로우보다 약 1.2 ~ 1.5배 빠르다는 결과를 확인할 수 있었다. 

 

파이토치 첫걸음 책은 다음과 같이 구성된다. 

  • 딥러닝
  • 파이토치
  • 선형회귀분석
  • 인공 신경망
  • 합성곱 신경망
  • 순환 신경망
  • 학습 시 생길 수 있는 문제점과 해결 방안
  • 뉴럴 스타일 트랜스퍼(전이학습)
  • 오토인코더
  • 생성적 적대 신경망

사실 "학습 시 생길 수 있는 문제점과 해결방안" 부터 "생성적 적대 신경망" 까지 빼고는 다른 책에서도 다루고 있는 내용이다. 하지만 파이토치 첫걸음 책에서는 항상 등장하는 토픽들에 대하여 "첫걸음"이 가능하게끔 쉽게 설명해두었다. 이 책은 딥러닝의 기본적인 지식을 갖추고 있으며, 파이토치라는 프레임워크에 대해 처음으로 접하는 개발자에게 추천하고 싶은 책이다. 버스나 지하철로 이동 할 때 간편하게 들고다니면서 볼 수 있는 책이기도 하며, 짬짬히 공부하고 싶은 개발자에게 추천하고 싶다. 

 

 

파이토치의 매력적인 점은 데이터를 증강(Augmentation) 할 때 증강 변형 작업들을 묶어서 차례대로 실행 할 수 있다. 데이터 증강이란 말 그대로 데이터를 늘리는 방법인데, 영상을 좌우 상하 반전(Flip) 시키거나 임의의 크기로 잘라내(Crop)거나 평행이동을 시키기도 한다. 파이토치에서는 이러한 기본적인 증강을 torchvision에 포함시켰으며, 제공하는 함수들은 ToTensor, ToPILImage, Normalize, Resize, Scale, CenterCrop, Pad, Lambda, RandomCrop, RandomHorizontalFlip, RandomVerticalFlip 등이 있으며, ImageFolder 함수에 넣어서 다음과 같이 사용 가능하다. 

 

img_data = dset.ImageFolder(img_dir, transforms.Compose([
			transforms.RandomSizedCrop(224),
            transforms.RandomHorizontalFlip(),
            transforms.ToTensor(),
            ]))

 

728x90
반응형