텐서플로, 케라스를 이용해서 딥러닝을 배울수 있따.
#텐서플로 라이브러리 안에 있는 케라스 API에서 필요한 함수들을 불러옵니다.
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
#데이터를 다루는 데 필요한 라이브러리를 불러옵니다.
import numpy as np
#깃허브에 준비된 데이터를 가져옵니다.
!git clone https://github.com/taehojo/data.git
#준비된 수술 환자 데이터를 불러옵니다.
Data_set = np.loadtxt("./data/ThoraricSurgery3.csv", delimiter=",")
X = Data_set[:,0:16] # 환자의 진찰 기록을 X로 지정합니다.
y = Data_set[:,16] # 수술 1년 후 사망/생존 여부를 y로 지정합니다.
#딥러닝 모델의 구조를 결정합니다.
model = Sequential()
model.add(Dense(30, input_dim=16, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
#딥러닝 모델을 실행합니다.
model.compile(loss='binary_crossentropy', optimizer='adam',
metrics=['accuracy'])
history = model.fit(X, y, epochs=5, batch_size=16)
딥러닝의 모델을 설정하고 구동하는 부분은 모두 MODEL 이라는 함수를 선언하며 시작됩니다.
model = sequential()로 시작되는 부분은 딥러닝의 구조를 짜고 층을 설정하는 부분입니다.
model.compile()부분은 앞에서 정한 모댈을 컴퓨터가 알게끔 컴파일하는 부분입니다.
model.fit()으로 시작하는 부분은 모델을 실제로 수행하는 부분입니다.
model = Sequential()
model.add(Dense(30, input_dim=16, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
딥러닝의 구조를 짜고 층을 설정하는 부분은 위와 같다.
딥러닝은 입력층과 출력층 사이에 은닉층을 추가하면서 학습시키는 것
이 층들은 케라스에서 model = Sequential() 함수를 통해 구현된다.
model.add는 층을 만드는 코드
model.add(Dense(30, input_dim=16, activation='relu')) 이 함수는 몇 개의 노드를 이 층에서 만들 것인지 숫자를 적어두는 것 30이라고 적혀있어서 30개의 노드가 만들어짐.
input_dim은 입력 데이터에서 몇개의 데이터를 가져올지를 정하는 것
keras는 입력층을 만드는 것이 아니라, 첫 번째 은닉층에서 input_dim을 적어
dense가 은닉층 + 입력층의 역할을 하는 것임.
model.add(Dense(1, activation='sigmoid'))
출력층의 역할을 하는 코드 1은 출력층이 하나여서이고 sigmoid 함수를 사용했다.
model.compile(loss='binary_crossentropy', optimizer='adam',
metrics=['accuracy'])
앞서 지정한 모델이 효과적으로 구현될 수 있게 여라가지 환경을 설정해주면서 컴파일하는 부분
손실함수의 2가지 평균제곱오차와 교차 엔트로피 오차
교차 엔트로피 오차 함수를 적용하기 위해 binary_crossentropy를 사용했습니다.
손실함수는 최적의 가중치를 학습하기 위해 필수적인 부분
옵티마이저는 'adam' 을 사용했습니다.
metrics=['accuracy']) 이 부분은 모델 수행의 결과를 나타내게끔 설정하는 부분입니다.
accuracy라고 설정한 것은 학습셋에 대한 정확도에 기반해 결과를 출력하라는 의미입니다.
history = model.fit(X, y, epochs=5, batch_size=16) 컴파일 단계에서 정해진 환경을 주어진 데이터를 불러 실행시킬 때 사용되는 함수는 model.fit부분 입니다.
에포크 학습프로세서가 모든 샘플에 대해 한 번 실행되는 것
epochs=5로 지정한 것은 각 샘플에 다섯 번 재사용될때까지 실행을 반복
batch_size는 샘플을 한 번에 몇 개씩 처리할지 정하는 부분으로
batch_size = 16은 전체 470개의 샘플을 16개 씩 끊어서 집어넣기
컴퓨터의 메모리가 감당할 만큼의 batch_size를 찾아 설정해 주는 것이 좋다.
비싼 컴퓨터를 쓰자...!