정규화 레이어는 'preprocessing' 모듈에 포함된 'Normalization' 메서드를 사용하여 손쉽게 구축할 수 있습니다. 이 레이어는 전복(abalone) 데이터셋의 특성(feature)에 맞게 적응하도록 설계되었으며, 모델의 학습 능력을 향상시키기 위해 밀집(Dense) 레이어도 함께 추가됩니다.
정규화 레이어는 각 컬럼(열)과 연관된 평균(mean)과 분산(variance) 값을 사전 계산하는 역할을 하며, 이렇게 계산된 값들을 활용해 데이터를 정규화합니다.
전복 데이터셋 소개
이 튜토리얼에서는 전복 데이터셋을 사용합니다. 전복은 일종의 바다 달팽이(연체동물)로, 이 데이터셋에는 전복의 다양한 신체 측정값들이 담겨 있습니다. 목표는 나이(age)를 제외한 나머지 측정값들을 기반으로 전복의 나이를 예측하는 회귀 모델을 만드는 것입니다.
개발 환경: Google Colaboratory
아래 코드는 Google Colaboratory(Colab)에서 실행됩니다. Google Colab은 브라우저에서 별도의 설정 없이 Python 코드를 실행할 수 있도록 지원하며, GPU(그래픽 처리 장치)를 무료로 사용할 수 있다는 큰 장점이 있습니다. 또한 Jupyter Notebook을 기반으로 구축되어 있어 데이터 분석 및 머신러닝 실습에 매우 편리합니다.
코드 구현
print("A normalization layer is being built")
normalize = preprocessing.Normalization()
normalize.adapt(abalone_features)
print("A dense layer is being added")
norm_abalone_model = tf.keras.Sequential([
normalize,
layers.Dense(64),
layers.Dense(1)
])코드 출처: https://www.tensorflow.org/tutorials/load_data/csv
실행 결과
A normalization layer is being built A dense layer is being added
코드 설명
- 모델에 입력되는 데이터가 정규화(normalization) 과정을 거칩니다.
- 이러한 정규화는 'experimental.preprocessing' 레이어를 추가함으로써 모델에 통합할 수 있습니다.
- 정규화 레이어는 각 컬럼과 관련된 평균과 분산을 사전에 계산합니다.
- 계산된 평균과 분산 값들은 데이터를 정규화하는 데 활용됩니다.
- 먼저 'Normalization.adapt' 메서드를 사용하여 정규화 레이어를 생성하고, 데이터셋의 특성에 맞게 적응시킵니다.
- 주의할 점은, 'adapt' 메서드에는 반드시 학습(training) 데이터만 사용해야 한다는 것입니다. 테스트 데이터나 검증 데이터를 사용하면 데이터 누수(data leakage) 문제가 발생할 수 있습니다.
- 마지막으로, 이렇게 준비된 정규화 레이어를 활용하여 최종 모델을 구축합니다.