코딩일기

딥러닝 표준화 전처리를 Layer로 넣기 & underscore(_) 이해하기 본문

Code/딥러닝(NL)

딥러닝 표준화 전처리를 Layer로 넣기 & underscore(_) 이해하기

daje 2022. 4. 10. 01:40
728x90
반응형

 

 

 

안녕하세요 다제입니다. 

 

요즘 글을 쓰다가 자꾸 이것저것 연결이 되어 글 하나를 제대로 못 올리고 있는데요

 

이렇게 해서 안돼겠다 싶더라구요. 그래서 이제 조각조각 난 개념들을 먼저 올리고 이를 순서대로 볼 수 있는 글을 따로 올려야겠다 라는 생각이들었습니다. 

 

오늘은 공부하는 것 중 표준화하는 Layer층을 만드는 방법에 대해서 소개를 해볼까 합니다. 

 

머신러닝을 하시는 분들은 sklearn에서 가볍게 scaler를 이용하여 값을 변경하면 되잖아? 라고 생각하실 수 있습니다. 

 

그런데, 그러한 과정을 거치지 않고 바로 데이터를 넣고 인공지능 안에서 모든 것들이 처리 되게 구현하고 싶어서 찾아본 밥법입니다. 

 

사실 원리는 간단합니다. class로 만들고 함수를 정의하고 model을 만들 때 layer를 넣어주기만 하면 됩니다. 

 

바로 살펴 보시죠!

 

class Standardization(keras.layers.Layer):
  def adapt(self, data_sample):
    self.means = np.mean(data_sample, axis=0, keepdims=True)
    self.std = np.std(data_sample, axis=0, keepdims=True)
  def call(self, inputs):
    return (inputs - self.means_) / (self.stds_ + keras.backend.epsilon())

이렇게 클래스를 정의하고 아래와 같은 방법으로 사용하면 됩니다. 

 

std_layer = Standardization()
std_lyaer.adapt(data)

model = Sequential()
model.add(std_layer)
# 이후 작성하던 대로 모델을 작성하면 됩니다.

 

이 코드를 살펴보다가 이상한 점을 발견하셨을텐데요 

네! 맞습니다. self.means_ 의 _를 보셨을 겁니다. 

 

이것을 찾기 위해 _에 대해서 다시 한번 공부하는 시간을 갖게 되었습니다. 

일단, 결론부터 말씀을 드리면, single_trailing_underscore_으로  파이썬 키워드와 충돌을 피하기 위해 사용하는 컨벤션입니다. 

 

이 외 _에 관련된 자세한 사항은 아래 블로그를 참고해주시면 감사드리겠습니다. 

https://mingrammer.com/underscore-in-python/

 

파이썬 언더스코어(_)에 대하여

파이썬에서 언더스코어(underscore, _)는 특별하다. 타 언어에서 언더스코어(_)는 단지 스네이크 표기법의 변수나 함수명을 위해서만 사용되어지

mingrammer.com

 

오늘도 방문해주셔서 너무 감사드립니다. 

앞으로 자주 업로드 할께요! 많은 응원 부탁드립니다. 

728x90
반응형
Comments