4주차 - 10장 딥러닝 모델 설계하기

김영기·2024년 1월 6일
0

10장 딥러닝 모델 설계하기

텐서플로, 케라스를 이용해서 딥러닝을 배울수 있따.

1. 모델의 정의

#텐서플로 라이브러리 안에 있는 케라스 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()으로 시작하는 부분은 모델을 실제로 수행하는 부분입니다.

2. 입력층, 은닉층, 출력층

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 함수를 사용했다.

3. 모델 컴파일

model.compile(loss='binary_crossentropy', optimizer='adam',
metrics=['accuracy'])

앞서 지정한 모델이 효과적으로 구현될 수 있게 여라가지 환경을 설정해주면서 컴파일하는 부분

손실함수의 2가지 평균제곱오차와 교차 엔트로피 오차

교차 엔트로피 오차 함수를 적용하기 위해 binary_crossentropy를 사용했습니다.

손실함수는 최적의 가중치를 학습하기 위해 필수적인 부분

옵티마이저는 'adam' 을 사용했습니다.
metrics=['accuracy']) 이 부분은 모델 수행의 결과를 나타내게끔 설정하는 부분입니다.
accuracy라고 설정한 것은 학습셋에 대한 정확도에 기반해 결과를 출력하라는 의미입니다.

4.모델 실행하기

history = model.fit(X, y, epochs=5, batch_size=16) 컴파일 단계에서 정해진 환경을 주어진 데이터를 불러 실행시킬 때 사용되는 함수는 model.fit부분 입니다.

에포크 학습프로세서가 모든 샘플에 대해 한 번 실행되는 것
epochs=5로 지정한 것은 각 샘플에 다섯 번 재사용될때까지 실행을 반복

batch_size는 샘플을 한 번에 몇 개씩 처리할지 정하는 부분으로
batch_size = 16은 전체 470개의 샘플을 16개 씩 끊어서 집어넣기

컴퓨터의 메모리가 감당할 만큼의 batch_size를 찾아 설정해 주는 것이 좋다.

비싼 컴퓨터를 쓰자...!

profile
안녕하세요

0개의 댓글