일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- chatGPT
- airflow subdag
- hadoop
- tensorflow text
- GenericGBQException
- integrated gradient
- TensorFlow
- subdag
- flask
- spark udf
- correlation
- 유튜브 API
- session 유지
- top_k
- GCP
- BigQuery
- Airflow
- login crawling
- gather_nd
- grad-cam
- Retry
- youtube data
- API Gateway
- 상관관계
- UDF
- Counterfactual Explanations
- XAI
- API
- requests
- 공분산
- Today
- Total
데이터과학 삼학년
Image classification (Linear, DNN, CNN) 본문
Linear Models for Image Classification
- MNIST 데이터에 대한 간략한 소개 : 손글씨 데이터
> 28*28 = 784의 매트릭스로 구성
> 각 classification label별로 확률을 예측함 → softmax function
> sigmoid → binary-classifier 라서 쓸 수 없음
- softmax →멀티 클래스에서 적용
- 모델의 정확도를 향상시키기 위해 loss function을 씀 → 분류문제에서는 cross-entropy 함수 적용
- sequential로 keras model을 만든 다음 compile을 이용해 모델을 만듦
- num_epoch is None이면 계속해서 데이터를 집어 넣는 것을 의미
- custom estimator는 my_model_fn에서 estimatorSpec을 return하는 함수를 model_fn에 입력해주는 방식으로 작동
- tensorflow2.0 → keras는 자동 분산 처리~!
- tensorflow1.x 에서 keras를 분산처리하려면 model_to_estimator에 담아서 하면 됨
> 카테고리형 변수를 다룰때 conflict가 날 수 있음
Deep neural network models for Image Classification
- DNN , fully connected model을 이용해서 학습할 경우, overfitting이 일어날 가능성 높겠지 → 모델이 복잡할 수록
Dropout
- 학습 단계에서 dropout을 적용하여 model을 regularization이 가능하도록 만듦
> overfitting 을 막음
> test할때는 적용x
> 제프리 힌튼은 어떻게 dropout을 생각해 냈을까?
: 은행에 갔는데 은행원들이 계속 바뀌는 것을 발견, 물어봤더니 부정행위를 막기위해 직원들을 여기저기 순환시키면서 일을 시켰다고 함 → 이것에서 아이디어를 얻어서 dropout을 고안해냈다고 함
- dropout layer는 layer를 정의한 이후에 코드를 적어주면 됨 → 코드상으로는 하나의 layer가 들어가는 것처럼 보이도록 되어 있음
- dropout을 keras로 구성할 때
Convolutional Neural Networks
- 복잡한 이미지에서 DNN을 쓸 경우, 모델이 처리하기위해 너무 복잡한 형태와 많은 weight를 가지게 됨
- 이미지 인식을 위해 특정 부분을 뽑기 위해 주로 feature engineering을 진행하였음
- 이미지의 특징을 뽑아내기 위해 convolution layer를 적용하여 추출함
- convolution : filter가 움직이면서 가중치합을 결과로 내뱉음 → filter의 값을 학습시키는 것이 CNN의 목적
> 필터사이즈 : 3x3
> 스트라이딩 : 움직일 단계(skip steps) → (1,1), (2,2)
> 맥스풀링 : 커널사이즈 내에서 가장 큰 값 추출
- 필터의 수와 커널사이즈를 다르게 적용할 수 있음(Alexnet)
- 필터의 작동 예
> edge, bright 등 탐지목적에 따라 적합한 필터가 있음
> 가로 방향의 선을 detect하는 예
> 수직 방향의 선을 detect 하는 예
> 복합적으로 kernel을 쓸 경우
- padding → 이미지의 테두리를 0으로 패딩시켜 필터를 거치고 나서의 이미지 크기를 같게 유지할 것인가(input_size=output_size), 아니면 작게 변환할거냐 결정
- stride : 필터의 움직임을 결정
- pooling layer : 필터내에서 어떤 값을 취할 것이냐
> maxpooling, averagepooling, minpooling
- layer의 순서 convolution → pooling → convolution → pooling …
- 케라스 구성 코드
> flatten 하게 만들때
Column = 높이*너비*깊이(필터수)
→ reshpe([-1,height*width*n_filters]
'Machine Learning' 카테고리의 다른 글
Graph 기초 (0) | 2020.06.02 |
---|---|
Isolation Forest (for anomaly detection) (0) | 2020.04.13 |
ROC, AUC (0) | 2020.02.17 |
Mutual Information_ 클러스터링 평가 척도 (0) | 2020.02.14 |
tf 2.0 - Keras (0) | 2020.02.03 |