본문 바로가기

파이썬(Python)

파이토치VS텐서플로우VS케라스 - 딥러닝 프레임워크 비교

안녕하세요. ㅎㅎ

 

올해 대학원에 진학하면서 한동안 활동을 못 했었는데 오늘부터 방학 기간이라 블로그를 다시 해보려고 합니다.

 

요즘 학업과 직장생활을 병행하면서 시간에 쫓기다 보니 불안감과 초조함 증상(?)이 생겼습니다.

 

그동안 휴식에 목말라 있었는데 막상 방학을 하고 나니 다른 일거리를 찾고 있는 자신을 발견하게 되었고 오랜만에 블로그를 해보려고 합니다.

 

오늘은 딥러닝 프레임워크에 대해 알아보려고 합니다.

 

딥러닝 공부를 하는 사람이라면 누구나 딥러닝 프레임워크 중 어떤 게 좋을지 고민을 해봤을 텐데요.

 

저 역시 같은 고민을 했었고 대학원 생활과 현업에 종사하며 다양한 딥러닝 프레임 워크를 사용해보고 느낀 점을 말해보려고 합니다.

 

딥러닝 프레임 워크의 수는 굉장히 많고 지금도 계속 개발 중이며 새로운 프레임 워크가 등장하고 있습니다.

 

그중 대표적인 프레임 워크는 텐서플로우, 파이토치, 케라스인데요.

 

텐서플로우는 구글에서 만들었으며 우리가 흔히 접하는 AI광고에도 등장하고 대중적으로 많이 알려져 있는 프레임 워크입니다.

 

파이토치는 구 페이스북 현 메타에서 만들었으며 텐서플로우보다 비교적 쉬우면서도 디테일한 모델링이 가능하기 때문에 최근 들어 많이 사용하는 프레임 워크입니다.

 

케라스는 텐서플로우를 기반으로 만든 프레임워크이며 텐서플로우의 난이도를 해결하고자 만들어졌습니다. 따라서 케라스를 사용하려면 텐서플로우를 설치해야 됩니다.

 

그 외에도 Caffe, Theano, Mxnet, Cntk, DeepLearning4j 등 많은 프레임 워크들이 있지만 보통 기업이나 학교 또는 기관에서 위 3가지 프레임워크를 주로 사용하고 있고 딥러닝을 처음 접하는 분들이라면 저 3가지 중 하나를 고민하기 때문에 위 3가지 프레임워크를 중심으로 비교해보도록 하겠습니다.

 

먼저 텐서플로우입니다.

텐서플로우는 구글에서 개발이 되었으며 딥러닝을 처음 접하는 사람들은 한 번쯤 들어봤을 만한 프레임워크입니다.

또 기업과 많은 연구자들이 사용하고 있으며  모델 구현 시 속도가 빠르며 세부 튜닝이 가능하기 때문에 디테일한 모델링을 할 수 있다는 장점이 있습니다.

 

단점은 난이도가 높습니다. 딥러닝을 다 이해하고 있더라도 프레임워크에 대해 많은 시간을 들여 배워야 할 만큼 난이도가 상당합니다. 이러한 단점을 개선하기 위해 keras가 만들어졌고 최근에는 텐서플로우2가 나오면서 난이도가 많이 개선되었지만 아직도 높은 스킬을 요구하는 프레임워크입니다.

 

텐서플로우는 버전2로 업그레이드 되면서 난이도에서 상당한 개선점을 보였으나 버전1보다 속도가 느려 기존에 버전1을 사용하고 있는 사용자들이 2로 넘어갈 이유가 없기 때문에 일반 기업이나 연구진들이 버전2로 넘어가기까지 상당한 시간이 걸릴 것으로 예상됩니다.

 

다음은 파이토치입니다.

파이토치는 페이스북에서 만든 프레임워크이며 장점으로는 텐서플로우보다 쉽고 디테일한 모델링이 가능합니다. 또한

텐서플로우로 구현하려면 상당한 수고스러움(?)을 거쳐야 하는 작업을 파이토치에선 간단하게 작업을 할 수 있기 때문에 같은 모델링을 하더라도 더 빠른 시간에 작업할 수 있습니다.

이러한 장점 때문에 국내 기업과 연구진들이 pytorch로 옮겨가고 있는 상황이며 국내 대학은 물론 대학원에서도 대부분 pytorch로 수업을 진행합니다.

 

단점 텐서플로우보다 디테일한 모델링은 불가능하며 속도 또한 텐서플로우보다 느립니다. 또 난이도는 텐서플로우보다 낮지만 딥러닝에 대해 이해도가 부족하거나 코딩 지식이 없다면 파이토치 또한 높은 난이도가 될 것입니다.

 

마지막으로 케라스입니다.

케라스는 텐서플로우의 높은 난이도를 해결하고자 구글 개발자에 의해 개발이 되었습니다. 케라스는 텐서플로우를 기반으로 두고 있기 때문에 이용시 텐서플로우 설치가 되어있어야 합니다.

케라스의 장점은 매우 쉽습니다. 앞서 말씀드린 것처럼 텐서플로우를 이용해 모델을 매우 쉽게 구현할 수 있는 프레임워크라 생각하면 됩니다.

 

단점 디테일한 모델링을 할 수 없고 함수 대부분이 자동화 및 간편화가 되어있기 때문에 코드만 보고 딥러닝 구조를 이해하기 어렵습니다.

 

필자의 경우 실제 모델 구현할 때는 파이토치를 이용하고 간단한 모델을 구현하거나 작업 및 모니터링을 할때 케라스를 사용합니다.

파이토치가 정밀한 모델링은 가능하지만 케라스는 빠르게 모델을 만들 수 있다는 점에서 케라스로 미리 만들어보거나 간단한 테스트를 할 때 정말 용이하게 사용합니다.

따라서 딥러닝 입문자는 케라스를 공부하고 어느 정도 익숙해졌다면 파이토치를 해보심을 권해드립니다.

 

이상 오늘의 블로그를 마치겠습니다.

 

감사합니다.

 

 

 

https://scikitlearn.tistory.com/73

 

주피터 노트북 실행 및 사용방법 - 파이썬 기초

안녕하세요~!!~ 오늘은 주피터 노트북 실행 및 사용방법에 대해 알아보려고 합니다. 주피터 노트북이란 파이썬의 개발 지원 툴로 사용방법이 간편하며 시각화에 강해 데이터 분석에 주로 사용됩

scikitlearn.tistory.com

 

 

https://scikitlearn.tistory.com/45

 

파이썬 코드 에디터 - 개발툴(IDE) 추천 및 다운로드 방법

안녕하세요! 오늘은 파이썬 코드 편집 에디터(IDE)에 대해 알아보려고 합니다. ㅎ IDE란 Integrated Development Environment의 약어로 쉽게 말해 통합개발환경이라 생각하시면 되겠습니다. 다른 말로는 개

scikitlearn.tistory.com