일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- 부트캠프
- 파이썬
- 주간보고
- JavaScript
- 매일매일
- pandas
- selenium
- 빅데이터
- 딥러닝
- Ai
- python
- 코드스테이츠
- 자료구조
- 노마드코더
- 코딩테스트
- 열심히
- leetcode
- bootcamp
- 꾸준히
- 선형회귀
- yolo
- 독서
- 기초통계
- 성실히
- Codestates
- MYSQL
- 재미져
- 리뷰
- SQL
- 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/
오늘도 방문해주셔서 너무 감사드립니다.
앞으로 자주 업로드 할께요! 많은 응원 부탁드립니다.