Steve Jang 2018. 3. 19. 10:43

텐서플로우(Tensorflow)란?


우선 인공지능 프로젝트에서 첫번째로 다뤄야 할 것들은 어떤 언어를 사용해서 만들어야 하는가? 이다. 필자의 주언어는 자바(Java)이기 때문에 자바로 딥러닝 라이브러리가 제공되면 좋으련만 딥러닝은 파이썬(Python)에 특화되어 있다. 정확히 말해서, 파이썬이 딥러닝을 다루기 좋은 언어라고 이해하면 된다(자바로 못만드는 것은 아니다)


자바라는 언어가 서비스에 정교하게 특화되어 있다면 파이썬은 시행착오, 데이터 분석 등과 같은 것들에 특화되어 있다. 그렇다 보니, 백엔드(Back-end)에서 무언가를 돌리는 것은 파이선으로 수행하면 프론트엔드(Front-end)단에서는 자바로 처리하는 것이 이상적으로 보인다


http://tensorflow.org



텐서플로우는 구글(Google)에서 만든, 딥러닝 오픈소스 패키지라고 이해하면 된다. 실제 파이썬 개발자들도 텐서플로우를 이해하기 상당히 힘들다. 텐서플로우는 정확하게 말하자면 파이썬에서 돌아가는 것이 아니라 파이썬으로 텐서플로우를 구동한다고 이해하면 된다. 애시당초 파이썬은 자바보다도 느린 언어라서 파이썬의 함수를 이용해서 딥러닝같은 엄청난 자원을 쓰는 알고리즘을 돌리는 것은 바보같은 짓이다.



일부 데이터 분석 프로그램을 작성할 때에도 자바로 구동할 때 느려서 C나 C++로 동일한 부분을 짜서, 서비스로 구현하는 경우도 종종 있는데 심지어 자바보다도 느린 파이썬으로 딥러닝을 구동하는 것 자체가 에바참치나 다름 없지만, 텐서플로우는 파이썬은 단지 껍데기이고, 자체적인 프로그램(아마도 C/C++로 만들어 졌겠지)을 파이썬이 호출하는 방식이라고 이해하면 된다. 이런식으로 만들어졌다보니 최근에서는 자바로 텐서플로우 모델을 호출하는 것을 제공한다. 다만 호출만 하는 것이지, 자바로 딥러닝 모델을 만들어서 저장을 하는 개념까지는 안갔다 즉 파이썬을 해야 한다는 것은 변함이 없다.