본문 바로가기
Keras Deep Learning

회귀 ANN(인공신경망) 실습

by yj.yoon 2020. 8. 19.

개발 환경 : pycharm-community-2020.2 (무료 에디션)

Anaconda, python3.7, Windows 10


시계열 데이터를 예측하는 회귀 ANN 구현

1. 모델링

입력에 해당하는 x 는 Nin 길이를 가지는 1차원 열 벡터이다.

- 파이썬 넘파이 라이브러리는 열 벡터 모양을 (Nin,) 처럼 표현한다.

은닉 계층은 x 가 hidden()을 통과하고 활성화 함수(relu)를 통과하게 구성

그래서 결과 h는 output 으로 정의된 계층으로 들어간다. - 출력은 활성화 없이 바로 y 출력

x = layers.Input(shape=(Nin,)) # 열 벡터 모양
h = relu(hidden(x))
y = output(h)

 

모델을 만들고, 만든 모델을 사용하기 위해 컴파일

self.compile(loss='mse', optimizer='sgd')

회귀 방식에 맞게.

손실 함수를 'MSE' 로 설정하고, 최적화는 sgd 알고리즘을 사용한다.

 

 

2. 학습과 평가용 데이터 불러오기

datasets : MNIST, Boston housing 등을 포함한 머신러닝 공개 데이터를 자동으로 불러오는 패키지

 

전처리를 하는 응용패키지(preprocessing) 불러오기

from sklearn import preprocessing

 

데이터 정규화

MinMaxScaler() : 최고값과 최저값을 1과 0으로 정규화해주는 함수

 

 

3. 학습 결과 그래프 구현

'keraspp' 폴더 아래 skeras.py 안에 함수를 필요할 때마다 import 할 것이다. - 중복 구현 방지

import matplotlib.pyplot as plt
from keraspp.skeras import plot_loss

 

 

 

4. 학습 및 성능 분석

회귀 모델링과 관련된 파라미터 정의한다.

def main():
    Nin = 13   # 입력 벡터의 길이
    Nh = 5     # 은닉 계층 5개
    Nout = 1   # 회귀를 통해 직접 예측함으로 출력 계층 길이는 1

 

모델의 인스턴스를 생성하고, 데이터를 불러와서, 만든 인스턴스를 학습시킨다.

model = ANN(Nin, Nh, Nout)   # 모델 생성
(X_train, y_train), (X_test, y_test) = Data_func()
history = model.fit(X_train, y_train, epochs=100, batch_size=100, validation_split=0.2, verbose=2) #학습

 

학습이 끝난 신경망으로 성능을 평가

성능 평가는 model.evaluate()를 사용한다.

performace_test = model.evaluate(X_test, y_test, batch_size=100)
print('\nTest Loss -> {:.2f}'.format(performace_test))

 

 

성능 평가 결과 : 21.96은 검증 데이터로 인한 손실인 val_loss : 21.8316 에 매우 근접한다.

 

 

와 드디어 ANN 끝났다^^


참고 : 코딩셰프의 3분 딥러닝 케라스맛