일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- c언어
- 케라스 정리
- 팀프로젝트
- 모두의 딥러닝 예제
- 딥러닝
- 골빈해커
- matlab 영상처리
- Pytorch Lecture
- 김성훈 교수님 PyTorch
- TensorFlow
- 해리스 코너 검출
- 모두의 딥러닝
- c언어 정리
- c++공부
- pytorch
- 컴퓨터 비전
- 파이토치 강의 정리
- 딥러닝 공부
- c++
- 가우시안 필터링
- 딥러닝 스터디
- 미디언 필터링
- tensorflow 예제
- object detection
- pytorch zero to all
- 파이토치
- 영상처리
- 파이토치 김성훈 교수님 강의 정리
- C언어 공부
- MFC 프로그래밍
- Today
- Total
ComputerVision Jack
[케라스 Chapter2 정리] 본문
MNIST 데이터셋 사용 케라스 간단한 신경망 제작하기.
실행 환경 : clab
from keras.datasets import mnist
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
# keras 내의 mnist 데이터셋 불러오기
데이터를 train set과 test set으로 나눈다.
[데이터 정보]
28 * 28 손글 씨 영상
영상 수 = 60000개
따라서 train.shape에 관한 정보는 (60000, 28, 28)이 된다.
test.shape은 (10000, 28, 28)
from keras import models
from keras import layers
network = models.Sequential()
network.add(layers.Dense(512, activation = 'relu', input_shape(28 * 28)))
network.add(layers.Dense(10, activation = 'softmax'))
#model의 Sequence를 제작한다.
add()메소드를 통해 layer를 추가한다. layer.Dense(층, 활성화 함수, 입력 데이터 shape)
0~9까지 10개의 클래스이기 떄문에 마지막 출력은 10으로 맞추어준다.
그리고 softmax로 뽑아낸다.
두번째 layers의 입력shape은 전 층에서의 output이 알아서 매칭이된다.
network.compile(optimizer = 'rmsprop', loss = 'categorical_crossentropy', metrics = ['accuracy'])
# 컴파일 과정을 거친다.
손실 함수를 정의하고 최적화 과정을 통해 원하는 지표를 뽑아낸다.
국지적 최솟값을 찾아내야 한다.
[데이터 전처리]
train_images = train_images.reshape(60000, 28 * 28))
train_images = train_images.astype('float32') / 255
# 우선 (28, 28) shape을 (784, 1)로 shape을 변경한다.
그리고 float 자료형으로 데이터를 변환하고, 영상 밝기 값이 0~255로 존재하기 때문에 255로 나누어 준다.
test_images도 마찬가지로 변형
from keras.utils import to_categorical
train_labels = to_categorical(train_labels)
#라벨을 변경한다. 예를들어 5일경우 [0, 0, 0, 0, 0, 1, 0, 0, 0, 0]
network.fit(train_images, train_labels, epochs = 5, batch_size = 128)
#모델을 fit()메서드를 이용하여 학습을 시킨다.
배치 사이즈 128은 60000 / 128 = 469 이다
즉 1epoch에 469번을 학습한다. 따라서 5 epoch는 2345번이다.
test_loss, test_acc = network.evaluate(test_images, test_labels)
print('test_acc', test_acc)
#evaluate() 메서드를 실행하여 분리해놓은 test dataset을 사용하여 평가를 한다.
데이터 표현 텐서(tensor)
텐서 : 머신러닝의 기본요소 = 다차원 넘파이 배열
(데이터를 위한 컨테이너)
텐서 = 차원 + 축으로 이루어져 있다. (축 갯수 rank)
- 스칼라 0D 텐서
- 벡터 1D 텐서
- 행렬 2D 텐서
- 3D 텐서와 고차원 텐서
텐서의 크기변환 reshape과 transpose(전치 행렬)
[배치 데이터]
딥러닝 모델은 데이터를 작은 배치로 나누어 처리한다.
[브로드 캐스팅]
큰 텐서의 ndim에 맞도록 작은 텐서에(브로드캐스팅 축) 축이 추가된다.
작운 텐서가 새 축을 따라 큰 텐서 크기에 맞춘다.
'DeepLearning > 케라스 - Keras Lib' 카테고리의 다른 글
[케라스 Chapter6 정리] (0) | 2020.02.11 |
---|---|
[케라스 Chapter5 정리] (0) | 2020.01.31 |
[케라스 Chapter4 정리] (0) | 2020.01.28 |
[케라스 Chapter3 정리] (0) | 2020.01.15 |
[케라스 Chapter1 정리] (0) | 2020.01.14 |