티스토리 뷰
1. 개요 |
Tensorflow도 그렇고 Keras도 그렇고 공식적인 예제를 보면 모두 내장된 0~9까지의 숫자 사진에 대해 학습을 진행합니다. 글 작성에 앞서 CNN에 대해 어떤 구조를 가지고 있는지 공부하고 싶으시다면 김태영님의 블로그를 추천드립니다.
2. 이미지 파일 학습(입력) 데이터로 변경 |
이미지 파일들을 학습하기 위해서는 해당 이미지 파일들을 숫자 배열로 저장해야합니다. 당연히 여기서 숫자 배열을 픽셀을 의미합니다.
저 같은 경우 카테고리 별로 cnn_sample 폴더 내에 카테고리별로 폴더를 생성하고 각각 이미지들을 정리하였습니다.
소스 코드 내 categories 변수는 카테고리 명뿐만 아니라 폴더를 찾는 용도로 사용하기 때문에 해당 class의 이미지들이 들어가 있는 폴더명을 넣어주시면 됩니다.
처음 이미지에 데이터를 학습하게 되셨다면 2중 for문안에 있는 코드에 대해 의문을 가질 수 있습니다.
cv2.resize 함수 파라미터로 fx에 28이 아닌 28/img.shape[1]가 들어갑니다. 쉽게 말씀들이면 만약 2가 들어간다면 해당 싸이즈에 2배가 됩니다. 네! 곱하기 연산이 되는 것이죠.
X.append(img/256)같은 경우는 픽셀은 0 ~ 255값을 가집니다. 그리고 학습을 하기엔 0~1사이의 소수가 필요하구요. 그래서 256으로 나누어 주었습니다.
최종 소스 코드는 다음과 같습니다.
train 데이터와 test 데이터를 구분짓고 싶지 않았는데 잘 되지 않더라구요. 이 부분은 차후에 해결하기로 하겠습니다. npy파일에 대한 설명은 http://rfriend.tistory.com/358을 참조하시기 바랍니다.
3. CNN |
Keras 공식? 예제 소스입니다. 앞서 말씀드렸지만 Keras 예제는 김태영님께서 정말 잘 설명해 주셔서 따로 설명을 작성하지 않겠습니다.
저는 카테고리 분류이기 때문에 categorical_crossentropy가 더 성능이 좋을 줄 알았는데 binary_crossentropy이 더 좋더라구요. 그렇다구요. ㅎ
오랫 동안? 또는 많은 데이터 학습하실 땐 CheckPoint와 StopPoint를 이용해 주세요. 다만 fit 시 test데이터와 train 데이터를 나누기 때문에 앞서 분리해둔 데이터들을 합쳐주시구요. 따로 Save 명령어 쓰지 않으셔도 기준(Loss)값을 비교해서 좋으면 갱신합니다. keras 기본 코드이기 때문에 따로 설명하지 않겠습니다.
4. 학습한 모듈 사용하기 |
테스트 할 데이터들을 학습 데이터처럼 28*28로 변경해줍니다. 그리고 똑같이 256으로 나누어 줍니다.
실행 결과입니다.
'SoftWare > 머신러닝' 카테고리의 다른 글
MLP Sample Code(Keras) (0) | 2018.06.08 |
---|---|
수식과 코드로 보는 경사하강법(SGD,Momentum,NAG,Adagrad,RMSprop,Adam,AdaDelta) (3) | 2018.05.29 |
학습 속도 조절 - Decaying the learning rate 사용법 (0) | 2018.02.26 |
Multilayer Perceptron(MLP) Tutorial (1) | 2018.02.23 |
Logistic Regression(Classification) (0) | 2018.02.12 |
- Total
- Today
- Yesterday
- 서버
- java
- 카운터
- Java Decompiler
- 안드로이드
- java url
- android
- Service
- 포켓몬 고
- 유전
- vim
- 알고리즘
- 아두이노
- java 파일 입출력
- php
- 5582
- 파일입출력
- jad
- Res
- 유전 알고리즘
- c언어
- 포켓몬 Go
- 파일 입출력
- counter
- LISTVIEW
- vim 설치
- 자바 입출력
- 테라펀딩 #투게더펀딩 #P2P투자 #부동산 소액 투자 #카카오 #토스
- Notification
- 인텐트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |