TensorFlow는 Google이 제공하는 머신러닝 프레임워크입니다. 오픈소스 기반으로 Python과 함께 사용되어 알고리즘 구현, 딥러닝 애플리케이션 개발 등 다양한 작업에 활용되며, 연구 목적과 실제 프로덕션 환경 모두에서 널리 쓰이고 있습니다.
TensorFlow는 복잡한 수학 연산을 빠르게 처리할 수 있는 최적화 기법을 갖추고 있습니다. 이는 내부적으로 NumPy와 다차원 배열을 활용하기 때문인데, 이러한 다차원 배열을 '텐서(tensor)'라고 부릅니다.
이 프레임워크는 심층 신경망(deep neural network) 작업을 지원하며, 뛰어난 확장성을 바탕으로 수많은 인기 데이터셋을 함께 제공합니다. GPU 연산을 활용하고 리소스 관리를 자동화하며, 방대한 머신러닝 라이브러리와 잘 정비된 문서를 갖추고 있어 딥러닝 모델의 학습부터 예측 애플리케이션 제작까지 폭넓게 사용할 수 있습니다.
TensorFlow 설치하기
'tensorflow' 패키지는 Windows 환경에서 아래 명령어 한 줄로 간단히 설치할 수 있습니다.
pip install tensorflow
텐서(Tensor)란 무엇인가?
텐서는 TensorFlow에서 사용되는 핵심 데이터 구조로, 플로우 다이어그램(flow diagram)에서 엣지(edge)를 연결하는 역할을 합니다. 이러한 플로우 다이어그램을 '데이터 플로우 그래프(Data Flow Graph)'라고 합니다. 텐서는 본질적으로 다차원 배열 또는 리스트이며, 다음 세 가지 주요 속성으로 식별할 수 있습니다.
- Rank(랭크) − 텐서의 차원 수를 나타냅니다. 텐서의 차수(order) 또는 정의된 텐서가 가진 차원의 개수로 이해할 수 있습니다.
- Type(타입) − 텐서 요소에 연결된 데이터 타입을 의미합니다. 1차원, 2차원 또는 n차원 텐서일 수 있습니다.
- Shape(형상) − 행과 열의 개수를 함께 나타냅니다.
Google Colaboratory에서 코드 실행하기
이 글의 예제 코드는 Google Colaboratory(Colab)에서 실행합니다. Google Colab은 브라우저에서 바로 Python 코드를 실행할 수 있도록 도와주는 도구로, 별도의 설정이 필요 없으며 GPU(그래픽 처리 장치)를 무료로 사용할 수 있다는 장점이 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 만들어졌습니다.
예제 코드
다음은 데이터셋을 구성하는 코드 스니펫입니다.
AUTOTUNE = tf.data.experimental.AUTOTUNE
print("The configure_dataset method is defined")
def configure_dataset(dataset):
return dataset.cache().prefetch(buffer_size=AUTOTUNE)
print("The function is called on training dataset")
binary_train_ds = configure_dataset(binary_train_ds)
print("The function is called on validation dataset")
binary_val_ds = configure_dataset(binary_val_ds)
print("The function is called on test dataset")
binary_test_ds = configure_dataset(binary_test_ds)
int_train_ds = configure_dataset(int_train_ds)
int_val_ds = configure_dataset(int_val_ds)
int_test_ds = configure_dataset(int_test_ds)코드 출처 − https://www.tensorflow.org/tutorials/load_data/text
실행 결과
The configure_dataset method is defined The function is called on training dataset The function is called on validation dataset The function is called on test dataset
코드 설명
- 데이터를 로딩하는 동안 입력이나 출력이 막히지 않도록 하는 것이 중요합니다. 이를 위해 두 가지 메서드를 정의하여 사용합니다.
- 'cache' 메서드는 디스크에서 한 번 불러온 데이터를 메모리에 유지합니다.
- 이를 통해 학습 과정에서 데이터 로딩이 병목 현상을 일으키지 않도록 보장할 수 있습니다.
- 'prefetch' 메서드는 학습 과정에서 데이터 전처리와 모델 실행을 겹쳐(overlapping) 처리함으로써 전체 파이프라인의 효율을 높여줍니다.