Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

텐서플로우(TensorFlow)란 무엇일까? Keras로 신경망 만드는 방법 총정리

텐서플로우(TensorFlow)란 무엇인가?

텐서플로우는 구글(Google)이 제공하는 대표적인 머신러닝 프레임워크입니다. 오픈소스로 공개되어 있으며, 파이썬(Python)과 함께 사용해 다양한 알고리즘과 딥러닝 애플리케이션을 손쉽게 구현할 수 있습니다.

텐서플로우는 연구 목적과 실제 서비스(프로덕션) 환경 모두에서 폭넓게 활용됩니다. 복잡한 수학 연산을 빠르게 처리할 수 있는 최적화 기법을 갖추고 있는데, 이는 내부적으로 NumPy와 다차원 배열을 사용하기 때문입니다. 이러한 다차원 배열을 바로 '텐서(tensor)'라고 부릅니다.

텐서플로우의 주요 특징은 다음과 같습니다.

  • 딥러닝 신경망(deep neural network) 작업을 완벽하게 지원합니다.
  • 확장성이 뛰어나며, 다양한 인기 데이터셋을 기본으로 제공합니다.
  • GPU 연산을 활용하고 리소스 관리를 자동화합니다.
  • 방대한 머신러닝 라이브러리를 포함하고 있으며, 문서화와 커뮤니티 지원이 잘 되어 있습니다.

이 프레임워크는 딥러닝 신경망 모델을 실행하고 학습시킬 수 있으며, 데이터셋의 특성을 예측하는 애플리케이션까지 만들 수 있습니다. 윈도우(Windows) 환경에서는 아래 명령어 한 줄로 텐서플로우를 설치할 수 있습니다.

pip install tensorflow

텐서(Tensor)란 무엇인가?

텐서는 텐서플로우에서 사용되는 기본 데이터 구조입니다. 텐서는 데이터 흐름 다이어그램, 즉 '데이터 플로우 그래프(Data flow graph)'에서 노드 사이의 엣지(edge)를 연결하는 역할을 합니다. 텐서는 결국 다차원 배열 또는 리스트라고 할 수 있으며, 다음 세 가지 주요 속성으로 정의됩니다.

  • 랭크(Rank): 텐서의 차원(dimensionality)을 나타냅니다. 텐서의 차수(order), 즉 정의된 텐서가 가진 차원의 개수로 이해할 수 있습니다.
  • 타입(Type): 텐서 요소에 연결된 데이터 타입을 의미합니다. 1차원, 2차원 또는 n차원 텐서 모두 가능합니다.
  • 형태(Shape): 행(row)과 열(column)의 개수를 함께 나타낸 값입니다.

Keras란 무엇이며, 어떻게 신경망을 만들 수 있을까?

Keras는 그리스어로 '뿔(horn)'을 의미하는 단어에서 이름을 가져왔습니다. Keras는 ONEIROS(Open ended Neuro-Electronic Intelligent Robot Operating System, 개방형 신경 전자 지능 로봇 운영체제) 프로젝트의 연구 과정에서 개발되었으며, 파이썬으로 작성된 딥러닝 API입니다. 머신러닝 문제 해결에 도움이 되는 생산적인 인터페이스를 제공하는 고수준(high-level) API입니다.

Keras는 텐서플로우 프레임워크 위에서 동작합니다. 빠른 실험과 검증을 돕기 위해 설계되었으며, 머신러닝 솔루션을 개발하고 캡슐화하는 데 필수적인 추상화 계층과 빌딩 블록을 제공합니다. 확장성이 뛰어나고 크로스 플랫폼을 지원하기 때문에 TPU나 GPU 클러스터에서도 실행할 수 있습니다. 또한 Keras 모델은 웹 브라우저나 모바일 기기에서 실행되도록 내보내기(export)할 수도 있습니다.

Keras는 이미 텐서플로우 패키지 안에 포함되어 있으므로, 별도 설치 없이 아래 코드만으로 불러와 사용할 수 있습니다.

import tensorflow
from tensorflow import keras

위 코드를 통해 텐서플로우 패키지에서 Keras를 임포트(import)했습니다. 이제 Keras 모듈을 활용해 Sequential 모델 생성, 레이어 추가, 컴파일, 학습 등의 과정을 거치며 신경망을 손쉽게 구축할 수 있습니다.