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

TensorFlow를 활용해 꽃 데이터셋을 표준화하는 방법

데이터 표준화란 무엇인가?

데이터 표준화(Data Standardization)는 데이터셋의 모든 특성(feature)이 동일한 단위 체계로 표현될 수 있도록 값의 크기를 일정 범위로 조정하는 작업을 의미합니다. TensorFlow에서는 Keras 모듈에 포함된 'Rescaling' 메서드를 사용해 재조정(rescaling) 레이어를 손쉽게 만들 수 있으며, 이 레이어는 'map' 메서드를 통해 데이터셋 전체에 일괄 적용됩니다.

관련 글: TensorFlow란 무엇이며, Keras는 TensorFlow와 함께 어떻게 신경망을 구성할까요?

사용할 데이터셋 소개

이번 예제에서는 수천 장의 꽃 이미지가 담긴 꽃 데이터셋(flowers dataset)을 사용합니다. 이 데이터셋은 총 5개의 하위 디렉터리로 구성되어 있으며, 각 하위 디렉터리는 하나의 클래스(꽃 종류)에 해당합니다.

아래 코드는 Google Colaboratory 환경에서 실행되었습니다. Google Colab은 별도의 설정 없이 브라우저에서 바로 Python 코드를 실행할 수 있게 해주며, GPU(그래픽 처리 장치)를 무료로 사용할 수 있다는 장점이 있습니다. Colaboratory는 Jupyter Notebook을 기반으로 만들어졌습니다.

Rescaling 레이어로 데이터 표준화하기

from tensorflow.keras import layers
print("Rescaling 레이어를 사용해 데이터를 표준화합니다")
normalization_layer = tf.keras.layers.experimental.preprocessing.Rescaling(1./255)

print("map 함수를 호출하여 레이어를 데이터셋에 적용할 수 있습니다")
normalized_ds = train_ds.map(lambda x, y: (normalization_layer(x), y))
image_batch, labels_batch = next(iter(normalized_ds))
first_image = image_batch[0]
print(np.min(first_image), np.max(first_image))

코드 출처: https://www.tensorflow.org/tutorials/load_data/images

실행 결과

Standardizing the data using a rescaling layer
This layer can be applied by calling the map function on the dataset
0.0 0.96902645

코드 설명

  • RGB 채널 값은 기본적으로 0부터 255 사이의 범위를 가집니다.
  • 하지만 이러한 큰 값은 신경망 학습에 적합하지 않습니다.
  • 따라서 입력 데이터를 가능한 한 작은 값으로 만드는 것이 좋습니다.
  • Rescaling 레이어를 사용하면 이미지의 픽셀 값을 0과 1 사이 범위로 표준화할 수 있습니다.
  • 대안으로, 이 재조정 레이어를 모델 정의 내부에 포함시키는 방법도 있습니다. 이 경우 배포(deployment) 과정이 한층 간단해진다는 장점이 있습니다.