파이토치 VS 텐서플로

Hyunuk·2024년 2월 19일
0

인공지능

목록 보기
4/5
post-thumbnail

소개

파이토치텐서플로는 모두 개발자가 머신러닝 모델을 구축하고, 학습할 수 있는 도구를 제공하는 딥러닝 프레임워크이다. 둘 다 장단점이 있기에 본인의 요구사항에 맞는 툴을 사용하는게 중요하다. 그래서 이번 글에서는 이 두 프레임워크의 특징과 장단점에 대해 간단하게 알아볼 것이다.

파이토치

파이토치는 2016년에 페이스북(메타) AI 연구팀에서 공개한 파이썬 기반 오픈소스 라이브러리이다. 파이토치는 기존에 루아 언어로 개발된 토치를 파이썬으로 사용할 수 있게하였다.

파이토치 아키텍처

파이토치의 경우 엔진과 연산기능은 CUDA나 C++로 개발되어있고, API는 파이썬을 통해 접근 가능하게 하여 성능과 편의성 모두 챙겼다.

파이토치의 특징

  • 동적 계산 그래프(cynamic computation graph)를 사용해 자연스러운 코드작성 지원
  • 높은 확장성을 갖고, GPU를 통한 병렬처리가 가능
  • 그래프를 만들면서 동시에 값을 할당하는 Define by run 방식을 사용해, 코드가 직관적으로 작성 가능
  • Numpy를 대체하고, GPU를 이용한 연산이 가능해 딥러닝 논문에서 많이 사용됨
  • 역전파 함수를 사용한 자동미분 AutoGrad를 지원한다.

텐서플로

텐서 플로는 구글에서 만든 딥러닝을 쉽게 구현할 수 있도록 기능을 제공하는 라이브러리이다.

텐서플로우가 맞는 발음인 것같지만 대다수의 한글 문서에서는 텐서플로 불리고 있다

텐서플로는 기본적으로 C++로 구현이 되지만, 파이썬, 자바, GO와 같은 언어를 지원한다. 하지만 파이썬을 우선적으로 지원하기에 파이썬으로 개발하는게 권장된다.

케라스

텐서플로가 상대적으로 학습하기 어렵다보니, 사용자 친화적인 API로 케라스가 등장한다. 케라스는 여러 백엔드 엔진을 지원하는데 그중에서도 텐서플로가 주된 백엔드로 사용된다. 텐서플로 2.0 부터는 케라스가 텐서플로의 공식 고급 API로 채택됨에 따라 텐서플로의 강력한 기능과 사용편의성이 결합되었다. 그럼에도 텐서플로를 직접 사용하는 것보다는 한계가 있다.

텐서플로의 특징

  • 데이터 플로우 그래프를 통한 풍부한 표현이 가능
  • 텐서보드를 통한 파라미터 변화 양상과 DNN 구조를 파악 가능
  • 계산 구조와 목적 함수만 정의하면 자동으로 미분 계산을 함
  • 나온지 오래되어, 다수의 학습자료에서 텐서플로로 된 예제가 많음
  • 메모리를 효율적으로 사용하지 못함
  • Static graph 방식을 사용함

Computational Graph 방식

파이토치와 텐서플로의 가장 큰 차이점 중에 하나가 computational ghaph의 방식이다.

  • 텐서플로 : static graph
  • 파이토치 : dynamic computation graph

가 사용된다.

텐서플로는 우선 그래프를 모두 정의하고, 실행시 데이터를 넣어 실행시키는 방식이다.

반면 파이토치는 define by run 방식으로 실행해가면서 그래프를 생성해 나가는 방식이다.

profile
매주 월요일 업로드

0개의 댓글