딥러닝

딥러닝(2) 텐서플로우에서 학습시 epoch와 batch_size에 대한 설명

개발연습자1 2022. 12. 27. 16:39

저번시간까지 딥러닝을 사용할 준비가 되어 있다면

 

구글 코랩에서 딥러닝을 써보자

 

구글코랩은 주피터 노트북과 유사한 구조를 가지고 있다.

 

따라서 코드를 한줄씩 따라해 보면서 해보자

 

우선 데이터를 불러온다.

 

데이터를 불러오려면 구글 코랩과 자동으로 연동된 구글 드라이브에 데이터 파일을 넣어줘야 한다.

 

# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
%matplotlib inline

# Churn_Modelling.csv 
# 구글 드라이브를 연동해서 읽어온다.
from google.colab import drive
drive.mount('/content/drive')

# 파이썬에서 디렉토리 경로

import os

os.chdir('/content/drive/MyDrive/Colab Notebooks/ml_plus/data')

df = pd.read_csv('Churn_Modelling.csv')

df

 

주피터 노트북과 유사한 데이터 프레임으로 출력이 된다.

 

데이터를 X,y 데이터로 나눈다. X는 조건 y는 결과 값으로 나눠야 한다.

 

y=df['Exited']

X=df.loc[:,'CreditScore':'EstimatedSalary']

 

이제 X데이터를 레이블 인코딩과 원인핫 인코딩 피쳐스케일을 순서로 진행하여 데이터 전처리를 진행한다.

 

#데이터 전처리 함수 호출
from sklearn import preprocessing

#데이터 스케일링 함수 호출
from sklearn.preprocessing import StandardScaler, MinMaxScaler

#데이터 레이블 함수 호출
from sklearn.preprocessing import LabelEncoder,OneHotEncoder

import sklearn
from sklearn.compose import ColumnTransformer
label_encoder = LabelEncoder()
X['Gender'] = label_encoder.fit_transform(X['Gender'])
ct=ColumnTransformer([('encoder',OneHotEncoder(),[1])],remainder = 'passthrough')
X=ct.fit_transform(X.values)

scaler_X =MinMaxScaler()
X=scaler_X.fit_transform(X)

 

X,y데이터를 train과 test 데이터로 나눈다.

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test=train_test_split(X,y,test_size=0.2,random_state= 0)

 

이제 딥러닝 텐서플로우를 써보자

# 텐서플로우 함수 호출
import tensorflow as tf
from tensorflow import keras
from keras.models import Sequential
from keras.layers import Dense

model=Sequential()

# 레이어 생성
model.add( Dense(units=6, activation='relu',input_shape=(11,))   )
model.add(  Dense(units=8,activation=tf.nn.relu) )
model.add(Dense(units = 1, activation='sigmoid'))

# 모델링이 끝나면, 컴파일(Compile)을 해야 한다.
# 컴파일이란, 옵티마이저(optimizer)와 로스펑션(loss function 오차함수, 손실함수 ). 검증방법을 셋팅

# 2개로 분류하는 문제의 loss 는 'binary_crossentropy' 을 설정한다.
model.compile(optimizer='adam',loss = 'binary_crossentropy',metrics=['accuracy'])
# 컴파일이 끝나면, 학습을 한다.
model.fit(X_train,y_train,batch_size=10, epochs= 20)
# 학습이 끝나면 평가를 한다.
model.evaluate(X_test,y_test)

이때 모델 fit에서 batch_size는 10개인데 데이터를 10개를 묶어서 입력한다는 이야기이고

epochs는 학습을 할 횟수를 말하는것이다. 20이니 20번 한다.

 

딥러닝이 다 학습했다면 평가를 해보자

#컨퓨전 매트릭스를 확인하여, 어떤 문제를 잘 맞추고 못맞추는지 확인
from sklearn.metrics import confusion_matrix,accuracy_score

X_test

y_pred = model.predict(X_test)

#조건을 주고 int로 변경
y_pred=(y_pred > 0.5).astype(int)

cm=confusion_matrix(y_test, y_pred)

 

반응형