앎을 경계하기

딥러닝으로 은하분류하기 5

<DAFIT> 02 딥러닝으로 은하 분류하기 08 - Another Model

CNN의 개선된 모델로 AlexNet을 사용했다. 다른 개선된 모델들(VGGNet, GoogleNet, ResNet)보다 구현이 쉬워서 적용해보니 확실히 성능이 개선되었다. AlexNet은 https://m.blog.naver.com/thswlrud0825/221287973276 여기 참고해서 모델 사용함. 원래 제공했던 예제 코드로는 78%, Conv, MaxPooling 하나씩 추가해서 81%, AlexNet을 사용하니 87%로 올랐다. dropout과 batch normalization으로 regularization 효과를 내서 overfitting을 막는다. 그리고 전 모델들보다 훨씬 깊게 쌓아서 더 깊게(?) feature들을 뽑아낸다.

<DAFIT> 02 딥러닝으로 은하 분류하기 06 - Validation, Evaluate

6번 문제는 본격적으로 모델을 학습시키고 정확도 평가를 하는 문제이다. keras는 model.fit()으로 model을 학습시킨다. (A)에는 fit이 될 것이다. steps_per_epoch는 1 epoch당 몇번의 step을 진행할 것이냐는 건데, 쉽게 말하면 배치를 몇 번 학습시킬것이냐를 말한다. 주로 총 학습 데이터/배치 사이즈 로 나타낸다. 이 예제에서는 (B) = 10233/batch_size가 될 것이다. validation_steps 는 말 그대로 validation 스텝 수이다. 각 200장이니까 (C) = 200을 써주면 된다. ( batch_size를 3으로 한다고 했을 때를 가정한다) evaluation 과정은 이미 학습이 다 끝난 모델에 test data를 넣어서 진짜 학습이 잘..

<DAFIT> 02 딥러닝으로 은하 분류하기 05 - Loss, Optimizer

이번 05 문제도 지난 04처럼 코드가 아닌 이론을 설명하는 문제이다. Loss function과 Optimizer에 대해서 설명하면 된다. loss function loss function은 ground truth(정답)과 생성한 모델의 예측값 간의 차이를 나타내는 함수. cross entropy(classification), mse(regression)가 대표적이다. cross entropy를 잘 설명해주는 블로그를 참고하면 좋을 것 같다. https://ratsgo.github.io/deep%20learning/2017/09/24/loss/ 딥러닝 모델의 손실함수 · ratsgo's blog 이번 글에서는 딥러닝 모델의 손실함수에 대해 살펴보도록 하겠습니다. 이 글은 Ian Goodfellow 등이..

<DAFIT> 02 딥러닝으로 은하 분류하기 04 - Relu, Softmax

4번 문제는 코드를 작성하는 게 아닌 이론적으로 설명하는 문제이다. relu 0보다 크면 그 값을 그대로 쓰고 0보다 작으면 0을 사용하는 활성화 함수. max(0,x) 입력이 음수인 경우 계속 0이 되어 dying Relu 가 발생한다. softmax 주로 output을 0~1 사이 값으로 정규화하여 주로 확률값으로 나타내는 경우에 사용하는 활성화 함수.

<DAFIT> 02 딥러닝으로 은하 분류하기 03 - CNN

이번에는 CNN모델을 구성해보는 문제다. 딥러닝을 이용한 은하 분류는 CNN을 사용하여 50x50 사이즈의 3가지 종류의 은하 이미지를 분류하는 것이다. model.add(layers.Conv2D(32, (3,3), activation='relu', input_shape=(50,50,3))) model.add(layers.MaxPooling2D((2,2))) model.add(layers.Conv2D(64, (3,3), activation='relu')) model.add(layers.Flatten()) model.add(layers.Dense(128, activation='relu')) model.add(layers.Dense(3, activation='softmax')) 문제에서 시킨대로 모델 구성 ..