일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 꾸준히
- 코드스테이츠
- 매일매일
- 파이썬
- python
- Ai
- MYSQL
- 코딩테스트
- 열심히
- SQL
- bootcamp
- leetcode
- 리뷰
- 재미져
- 부트캠프
- 딥러닝
- pandas
- 선형회귀
- 기초통계
- yolo
- selenium
- Codestates
- JavaScript
- 성실히
- 2021
- 독서
- 자료구조
- 주간보고
- 노마드코더
- 빅데이터
- Today
- Total
코딩일기
딥러닝 표준화 전처리를 Layer로 넣기 & underscore(_) 이해하기 본문
안녕하세요 다제입니다.
요즘 글을 쓰다가 자꾸 이것저것 연결이 되어 글 하나를 제대로 못 올리고 있는데요
이렇게 해서 안돼겠다 싶더라구요. 그래서 이제 조각조각 난 개념들을 먼저 올리고 이를 순서대로 볼 수 있는 글을 따로 올려야겠다 라는 생각이들었습니다.
오늘은 공부하는 것 중 표준화하는 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
오늘도 방문해주셔서 너무 감사드립니다.
앞으로 자주 업로드 할께요! 많은 응원 부탁드립니다.