TensorFlow는 구글(Google)이 제공하는 머신러닝 프레임워크입니다. 오픈소스로 공개되어 있으며, 파이썬(Python)과 함께 사용하여 다양한 알고리즘과 딥러닝 애플리케이션을 구현할 수 있습니다. 연구 목적뿐 아니라 실제 프로덕션 환경에서도 폭넓게 활용되고 있습니다.
윈도우(Windows) 환경에서는 아래 명령어 한 줄로 'tensorflow' 패키지를 설치할 수 있습니다.
pip install tensorflow
텐서(Tensor)란?
텐서는 TensorFlow에서 사용하는 기본 데이터 구조로, 데이터 흐름 그래프(Data Flow Graph)에서 노드와 엣지를 연결하는 역할을 합니다. 쉽게 말해 텐서란 다차원 배열 또는 리스트를 의미합니다.
Fashion MNIST 데이터셋 소개
'Fashion MNIST' 데이터셋은 다양한 종류의 의류 이미지를 담고 있는 데이터셋입니다. 총 10개 카테고리에 속하는 7만 장 이상의 회색조(grayscale) 의류 이미지로 구성되어 있으며, 해상도는 28×28 픽셀로 낮은 편입니다.
이 글의 코드는 Google Colaboratory(Colab)에서 실행했습니다. Colab은 브라우저에서 바로 파이썬 코드를 실행할 수 있게 해주며, 별도의 설정 없이 GPU(그래픽 처리 장치)를 무료로 사용할 수 있다는 큰 장점이 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 만들어졌습니다.
전처리 코드 예제
다음은 학습 이미지를 먼저 시각화해 픽셀 값 분포를 확인한 뒤, 픽셀 값을 정규화하고, 클래스 이름과 함께 여러 이미지를 다시 출력하는 코드입니다.
plt.figure()
plt.imshow(train_images[0])
plt.colorbar()
plt.grid(False)
plt.show()
train_images = train_images / 255.0
test_images = test_images / 255.0
plt.figure(figsize=(12,12))
for i in range(15):
plt.subplot(5,5,i+1)
plt.xticks([])
plt.yticks([])
plt.grid(False)
plt.imshow(train_images[i], cmap=plt.cm.binary)
plt.xlabel(class_names[train_labels[i]])
plt.show()
코드 출처 — https://www.tensorflow.org/tutorials/keras/classification
실행 결과


첫 번째 출력 결과에는 컬러바(colorbar)가 함께 표시되어 픽셀 값의 분포 범위를 직관적으로 확인할 수 있습니다. 정규화 이후에는 0~255 범위의 값이 0~1 사이로 변환된 것을 확인할 수 있습니다.
코드 설명
- 신경망을 학습시키기 전에는 반드시 입력 데이터셋을 전처리해야 합니다.
- 이미지를 콘솔에 출력해 살펴보면 픽셀 값이 대략 0~255 범위에 분포해 있음을 알 수 있습니다.
- 딥러닝 모델은 작은 값(0~1 범위)을 다룰 때 더 안정적으로 수렴하므로, 픽셀 값을 해당 범위로 스케일링(정규화)하는 것이 좋습니다.
- 이를 위해 모든 픽셀 값을 255로 나누어 줍니다.
- 학습용 데이터셋과 테스트용 데이터셋은 반드시 동일한 방식으로 전처리해야 합니다.
- 이렇게 하면 학습 단계와 평가 단계에서 같은 형태의 데이터가 입력되어 일관된 결과를 얻을 수 있습니다.
- 데이터가 올바른 형식으로 준비되었는지 확인하려면 처음 몇 개의 이미지를 각 이미지가 속한 클래스 이름과 함께 화면에 출력해 보면 됩니다.