앎을 경계하기

DAFIT 58

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

<DAFIT> 01 자연어 데이터 전처리 연습 - 03 사전순 배열시키기

import re filePath = 'drive/My Drive/다핏문제/01/Beta01_NLP.txt' p = re.compile('[ A-Z-a-z]') f = open(filePath, mode='r', encoding='euc-kr') s = f.read() f.close() s = p.findall(s) print(s) s = ''.join(s).split(' ') s = list(set(s)) for i in range(len(s)): s[i] = s[i].lower() s = sorted(s) f = open('drive/My Drive/다핏문제/03/DF901_03_이름.txt', mode='w', encoding='euc-kr') f.write('\n'.join(s)) f...

<DAFIT> 01 자연어 데이터 전처리 연습 - 01 특수 기호 제거

import re inputFile = 'Beta01_NLP.txt' outputFile = 'DF901_01_이름.txt' p = re.compile('[ ㄱ-ㅣ가-힣A-Za-z]') f = open(inputFile, mode='r', encoding='euc-kr') s = f.read() f.close() s = p.findall(s) s = ''.join(s) print(s) f = open(outputFile, mode='w', encoding='euc-kr') f.write(s) f.close() 나는 정규표현식 처리를 사용해서 특수 문자를 제거했다. 한글 처리 방법을 몰랐었는데 자,모음 'ㄱ-ㅣ' 과 음절 '가-힣' 을 알파벳 대소문자 'A-Z', 'a-z' 와 함께 []를 사용하여 문자클..