딥러닝 이해 시작(1) - 딥러닝 과정
실습 코드를 사용하여 딥러닝의 과정에 대해 알아보기
실습 : 폐암 수술 환자의 생존율 예측하기
주어진 폐암 수술 환자의 생존 여부 데이터는 총 470명의 환자의 17개의 정보를 정리한 것으로, 주어진 데이터에는 총 470개의 샘플이 각각 17개씩의 속성을 가지고 있다.
- 속성(또는 feature, 독립변수) : 17개의 환자 정보
- 샘플 : 가로 한 줄에 해당하는 각 환자의 정보
- 클래스(종속변수) : 생존 여부
전체 코드
# 딥러닝을 구동하는 데 필요한 케라스 함수를 불러옵니다.
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
# 필요한 라이브러리를 불러옵니다.
import numpy as np
import tensorflow as tf
# 실행할 때마다 같은 결과를 출력하기 위해 설정하는 부분입니다.
np.random.seed(3)
tf.random.set_seed(3)
# 준비된 수술 환자 데이터를 불러들입니다.
Data_set = np.loadtxt("./ThoraricSurgery.csv", delimiter=",")
# 환자의 기록과 수술 결과를 X와 Y로 구분하여 저장합니다.
X = Data_set[:, 0:17]
Y = Data_set[:, 17]
# 딥러닝 구조를 결정합니다(모델을 설정하고 실행하는 부분입니다).
model = Sequential()
model.add(Dense(30, input_dim=17, activation='relu')) # 입력층 노드 17개
# 은닉층1 노드 30개
model.add(Dense(1, activation='sigmoid')) # 출력층 노드 1개
# 딥러닝을 실행합니다.
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# 모델 학습
model.fit(X, Y, epochs=100, batch_size=10)
Sequential() 함수
model = Sequential()
- Sequential( ) 함수를 선언하고 나서 model.add( ) 함수를 사용해 필요한 층을 차례로 추가
model.add( ) 함수
model.add(Dense(30, input_dim=17, activation='relu')) # 입력층 노드 17개
# 은닉층1 노드 30개
model.add(Dense(1, activation='sigmoid')) # 출력층 노드 1개
- model.add( ) 함수를 이용해 두 개의 층을 쌓아 올림
- activation : 다음 층으로 어떻게 값을 넘길지 결정하는 부분
ex) relu() 함수, sigmoid() 함수
compile( ) 함수
# 딥러닝을 실행합니다.
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
- compile()함수를 이용하여 앞서 지정한 모델이 효과적으로 구현될 수 있게 여러 가지 환경 설정 및 컴파일
- 오차함수(loss) : 한 번 신경망이 실행될 때마다 오차 값을 추적하는 함수
- 최적화(optimizer) : 오차를 어떻게 줄여 나갈지 정하는 함수
fit() 함수
# 모델 학습
model.fit(X, Y, epochs=100, batch_size=10)
- fit() 함수를 이용하여 모델 학습
- 1 epoch : 학습 프로세스가 모든 샘플에 대해 한 번 실행되는 것
위 코드에서 100 epoch이므로 각 샘플이 처음부터 끝까지 100번 재사용될 때까지 학습 - batch_size : 샘플을 한 번에 몇 개씩 처리할지 정하는 부분
batch_size=10은 전체 470개 샘플을 10개씩 끊어서 집어넣으라는 뜻
batch_size가 너무 크면 학습 속도가 느려지고, 너무 작으면 각 실행값마다 편차가 생겨서 결과값이 불안정해짐
(자신의 컴퓨터 메모리가 감당할 만큼의 batch_size를 설정해 주는 것이 좋음)
딥러닝 학습 과정
- 입력값이 네트워크 층을 거치며 나온 예측값을 실제값과 비교해서 Loss score를 계산한 후에 Optimizer를 통해
Weight를 업데이트 하는 과정
'딥러닝' 카테고리의 다른 글
| 딥러닝 이해 시작(6) - 신경망과 오차역전파 (0) | 2022.06.13 |
|---|---|
| 딥러닝 이해 시작(5) - 활성화 함수 종류 (0) | 2022.06.12 |
| 딥러닝 이해 시작(4) - 로지스틱 회귀 (0) | 2022.06.12 |
| 딥러닝 이해 시작(3) - 선형회귀_1 (0) | 2022.06.12 |
| 딥러닝 이해 시작(2) - 시그모이드 함수 (0) | 2022.06.12 |