앎을 경계하기

DAFIT/902 - 딥러닝으로 은하분류하기 8

<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 딥러닝으로 은하 분류하기 07 - Accuracy

7번 문제 전에 사전 설명을 보면 다음과 같다. 각 은하의 형태를 보면 색보다는 모양에서 확연히 분류를 할 수 있을 것 같다. 이것은 꼭 이미지에서 RGB를 반영하지 않더라도 Grayscale로 충분히 학습할 수 있다는 것을 의미한다. 기존에는 아래와 같이 Conv-Pooling-Conv-Flat-FC-FC 구조였다. model.add(layers.Conv2D(32, (3,3), activation='relu', input_shape=(50,50,3))) # RGB model.add(layers.MaxPooling2D((2,2))) model.add(layers.Conv2D(64, (3,3), activation='relu')) model.add(layers.Flatten()) model.add(laye..

<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')) 문제에서 시킨대로 모델 구성 ..

<DAFIT> 02 딥러닝으로 은하 분류하기 02 - Image Data Generator

이 문제를 풀다가 정리했던 포스트를 링크한다. 2019/10/16 - [Study/Deep Learning] - Keras - ImageDataGenerator Keras - ImageDataGenerator Keras - ImageDataGenerator Keras에서 이미지 데이터를 학습할 때 실시간으로 data augmentation을 할 수 있도록 지원하는 클래스로 ImageDataGenerator가 있다. from keras_preprocessing.image import ImageDat.. whereisend.tistory.com 문제는 ImageDataGenerator를 사용하기 위해서 필요한 아래 코드의 A, B, C, D를 채우는 것이다. train_datagen = ImageDataGe..

<DAFIT> 02 딥러닝으로 은하 분류하기 01 - Import

DF901 데이터 전처리하기에 이어 이번에는 딥러닝으로 은하분류하기! CNN 모델을 구현해서 은하 이미지를 분류해보는 문제이다. Keras는 일단 Tensorflow를 base로 두고 있는 high-level API 이다. Keras Document 참고 Home - Keras Documentation Keras: The Python Deep Learning library You have just found Keras. Keras is a high-level neural networks API, written in Python and capable of running on top of TensorFlow, CNTK, or Theano. It was developed with a focus on enabl..