파이썬:keras(딥러닝)
파이썬 공부를 위한 틀 틀:파이썬
- 파이썬:개요
- 파이썬:변수
- 파이썬:함수
- 파이썬:데코레이터
- 파이썬:제어문
- 파이썬:클래스
- 파이썬:데이터 입출력
- 파이썬:라이브러리
- 파이썬:time, datetime(시간 다루기)
- 파이썬:os(운영체제 기능 이용)
- 파이썬:sys(인터프리터 관련 기능 제공)
- 파이썬:schedule(예약명령)
- 파이썬:COM(다른 프로그램과 연동)
- 판다스(데이터 분석)
- pybithumb(비트코인 거래)
- 파이썬:requests(api다루기)
- 파이썬:pymysql(mysql 연동)
- 파이썬:sqlite3(sqlite3 연동)
- 파이썬:math(숫자, 계산 관련)
- 파이썬:numpy(다차원 배열 및 데이터 다루기)
- 파이썬:matplotlib(그래프, 데이터 시각화)
- 파이썬:keras(딥러닝)
- 파이썬:turtle(그리기)
- 파이썬:프레임워크
- 파이썬:팁
- 파이썬:window창
- 파이썬:다양한 전략
개요
딥러닝 모델을 간편하게 만들고 훈련하기 위한 프레임워크.
동일한 코드로 CPU, GPU에서 실행이 가능하며, 다양한 api를 제공해 프로토타입을 빠르게 생성 가능하다. 합성곱 신경망, 순환신경망을 지원한다.
2020년 기준, 웹 검색 트렌드에서 텐서플로 다음으로 2위를 차지하고 있다.
텐서플로, 씨아노 등을 백엔드 엔진으로 사용할 수 있다.
사용법
데이터셋 가져오기
mnist의 데이터셋을 가져온다.
from keras.datasets import mnist
(train_images, train_labels), (test_images, test_labels) =
신경망 생성
from keras import models
;;; import layers
network = models.Sequential() #Sequential은 층을 차례로 추가한 모델이라는 의미. 층을 정의하고 아래의 add를 통해 쌓는다.
network.add(layers.Dense(유닛갯수, activation='활성화함수이름', input_shape=(입력크기 30*30 등,))) #첫번째 층. 유닛갯수는 출력값을 몇개로 할 것인가.
network.add(layers.Dense(유닛갯수, activation='활성화함수이름')) #2층. 나오는 층으로, 0~9까지의 구분을 하기 위한 층이다. 유닛갯수는 출력값 갯수.
network.compile(optimizer='어떻게 최적화할 것인가', loss='손실함수', metrics=['모니터링지표])
#마지막 층에선 확률을 측정하기 위해서 시그모이드 함수를 사용한다. 출력값을 확률처럼 해석하기 위해서.
훈련
훈련 직전. 데이터 조정.
network.compile(optimizer='', loss='', metrics=['']) #따옴표 안에 적절한 것을 넣는다.
레이블을 범주형으로
분류모델일 경우, from keras.utils import to_categorical 을 불러, 레이블=to_categorical(레이블) 을 해주어 해당 분류를 벡터화해준다.
train_images=train_images.reshape((데이터수, input수))
train_images=train_images.astype('float32')/255 #0~255사이의 값을 0~1 사이의 값으로 변환시킨다.
훈련
network.fit(train_images, train_lables, epochs=숫자, batch_size=128)
검증
test_loss, test_acc = network.evaluate(test_image, test_labels) #정확도를 판별한다.
t