텐서플로우(TensorFlow)

텐서플로우(TensorFlow)

텐서플로우를 알아봅시다.

2011년부터 구글에서 개발을 하기 시작하여 2015년에 오픈 소스로 공개한 인공지능 라이브러리입니다. 텐서플로우 에서는 기계학습 분야와 딥러닝과 같은 어려운 것들을 일반인들도 쉽게 사용할 수 있도록 다양한 기능들을 제공합니다. 특히, 알파고가 2016년에 등장하면서 그와 동시에 우리나라에서도 관심도가 높아져서 현재 관련 콘퍼런스(conference)들도 많이 열리고 있습니다.

또한, 높은 단계의 프로그래밍 언어로 알려진 파이썬(Python)을 활용하여 연산처리를 작성할 수 있습니다. 다른 프로그래밍 언어들도 대부분 지원하지만 파이썬 관련 자료가 가장 많기 때문에 역사는 깊지 않지만 텐서 플로우가 다양한 분야에서 활용되고 있는 것은 사실입니다.

그리고 데이터 플로우 그래프 구조를 사용하는 특징이 있는데, 이는 데이터의 흐름과 계산식을 노드와 에지를 사용하여 방향성을 그래프로 표현하는 방식입니다. 텐서 사이의 연결 관계를 다양하게 표현할 수 있고, 텐서 보드 시각화 도구 모음을 사용하면 그래프 실행방법에 대한 검사도 할 수 있고, 프로파일링 또한 가능합니다.

텐서플로우의 특징

텐서플로우는 여러 가지 다양한 특징을 가지고 있는데, 그 특징들은 아래와 같습니다.

데이터 플로우 그래프 를 통해 풍부하게 표현할 수 있습니다.

자동으로 미분 계산을 처리 할 수 있는데, 계산 구조와 목표 함수만 정의하면 됩니다.

다양한 프로그래밍 언어를 지원 하는데, Python, C++, Go, Java, R을 지원합니다. 그리고 SWIG를 통해 다양한 언어를 지원합니다.

코드 수정 없이 CPU/GPU 모드로 구동이 가능하여 일반 모드로 쓰고 싶을 땐 CPU 모드, 대량 연산이 필요한 경우에는 GPU 모드로 활용하면 됩니다.

텐서플로우 Lite

텐서플로우 Lite는 텐서플로우로 훈련시킨 모델을 안드로이드나 애플의 운영체제인 iOS에서도 사용할 수 있도록 변환하는 기술입니다. 예를 들자면 'ResNet50'을 가지고 이미지 분류를 하기 위한 훈련을 했다고 가정합시다. 그러면 모델에 해당 tflite 파일을 설정하고, 이미지를 1*224*224*3 사이즈의 비트맵으로 변환한 다음에 각 RGB 값에 255를 나눠서 프로세싱하면 됩니다. 그런 다음에 이 파일을 모델에 대입시키면 각 레이어(layer) 별로 예측한 확률의 집합체(array)가 나오는데, 여기다가 argmax와 같은 함수를 사용하여 예상 결과를 뽑을 수 있습니다.

개인적 견해

텐서플로우는 현재 많은 사람들이 사용하는 라이브러리입니다. 따라서 텐서플로우와 관련된 커뮤니티들이 규모 또한 큰데, 이러한 점은 다양한 정보를 사람들과 공유할 것이 많다는 것이 장점입니다. 하지만 텐서플로우는 초기에 학습하기에는 어렵다는 말이 있었습니다. 왜냐하면 코드를 구현하는데 구조적으로 어느 정도 불편한 점이 있었기 때문입니다. 하지만 현재는 2.0 버전으로 업데이트 되고 부터는 코드를 만드는데 불편한점들은 어느정도 해결되었다고 합니다. 하지만 2.0 버전 업데이트 이후에도 여전히 텐서 플로우가 성능이 떨어진다는 의견 이 많습니다. 하지만 무엇보다 텐서플로우는 구글에서 만들었고 주도하고 있기 때문에 무시할 수는 없는 실정입니다. 왜냐하면 현재 자연어 처리(NLP) 분야에서 뛰어난 성능을 내고 있는 모델들이 모두 구글 텐서 플로우로 구현되었기 때문입니다.

from http://ruky10.tistory.com/19 by ccl(A) rewrite - 2021-10-21 20:27:10