파이썬:keras(딥러닝): 두 판 사이의 차이
(→개요) |
편집 요약 없음 |
||
28번째 줄: | 28번째 줄: | ||
network.add(layers.Dense(유닛갯수, activation='활성화함수이름', input_shape=(입력크기 30*30 등,))) #첫번째 층. 유닛갯수는 출력값을 몇개로 할 것인가. | network.add(layers.Dense(유닛갯수, activation='활성화함수이름', input_shape=(입력크기 30*30 등,))) #첫번째 층. 유닛갯수는 출력값을 몇개로 할 것인가. | ||
network.add(layers.Dense(유닛갯수, activation='활성화함수이름')) #2층. 나오는 층으로, 0~9까지의 구분을 하기 위한 층이다. 유닛갯수는 출력값 갯수. | network.add(layers.Dense(유닛갯수, activation='활성화함수이름')) #2층. 나오는 층으로, 0~9까지의 구분을 하기 위한 층이다. 유닛갯수는 출력값 갯수. 1이면 0과 1을 표현한다. 2면 4가지 조합 가능. | ||
network.compile(optimizer='어떻게 최적화할 것인가', loss='손실함수', metrics=['모니터링지표]) | network.compile(optimizer='어떻게 최적화할 것인가', loss='손실함수', metrics=['모니터링지표]) | ||
36번째 줄: | 36번째 줄: | ||
===훈련=== | ===훈련=== | ||
==== 훈련 직전. 데이터 조정. ==== | ====훈련 직전. 데이터 조정.==== | ||
network.compile(optimizer=<nowiki>''</nowiki>, loss=<nowiki>''</nowiki>, metrics=[<nowiki>''</nowiki>]) #따옴표 안에 적절한 것을 넣는다. | network.compile(optimizer=<nowiki>''</nowiki>, loss=<nowiki>''</nowiki>, metrics=[<nowiki>''</nowiki>]) #따옴표 안에 적절한 것을 넣는다. | ||
==== 레이블을 범주형으로 ==== | ====레이블을 범주형으로==== | ||
분류모델일 경우, from keras.utils import to_categorical 을 불러, 레이블=to_categorical(레이블) 을 해주어 해당 분류를 벡터화해준다. | 분류모델일 경우, from keras.utils import to_categorical 을 불러, 레이블=to_categorical(레이블) 을 해주어 해당 분류를 벡터화해준다. | ||
46번째 줄: | 46번째 줄: | ||
train_images=train_images.astype('float32')/255 #0~255사이의 값을 0~1 사이의 값으로 변환시킨다. | train_images=train_images.astype('float32')/255 #0~255사이의 값을 0~1 사이의 값으로 변환시킨다. | ||
==== 훈련 ==== | ====훈련==== | ||
network.fit(train_images, train_lables, epochs=숫자, batch_size=128) | network.fit(train_images, train_lables, epochs=숫자, batch_size=128) | ||
=== 검증 === | ===검증=== | ||
test_loss, test_acc = network.evaluate(test_image, test_labels) #정확도를 판별한다. | test_loss, test_acc = network.evaluate(test_image, test_labels) #정확도를 판별한다. | ||
t | t | ||
== 이외기능 == | |||
L1,L2규제 등으로 적합도를 늘릴 수도 있다. | |||
드롭아웃도 제공한다. |
2020년 10월 21일 (수) 23:41 기준 최신판
파이썬 공부를 위한 틀 틀:파이썬
- 파이썬:개요
- 파이썬:변수
- 파이썬:함수
- 파이썬:데코레이터
- 파이썬:제어문
- 파이썬:클래스
- 파이썬:데이터 입출력
- 파이썬:라이브러리
- 파이썬: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까지의 구분을 하기 위한 층이다. 유닛갯수는 출력값 갯수. 1이면 0과 1을 표현한다. 2면 4가지 조합 가능.
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
이외기능[편집 | 원본 편집]
L1,L2규제 등으로 적합도를 늘릴 수도 있다.
드롭아웃도 제공한다.