개발 환경 : 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분 딥러닝 케라스맛
'Keras Deep Learning' 카테고리의 다른 글
컬러 이미지를 분류하는 DNN 구현 실습 (0) | 2020.08.20 |
---|---|
필기체를 분류하는 DNN 구현 실습 (0) | 2020.08.19 |
DNN(심층신경망) 개념, 경사도 소실 문제 & ReLU 활성화 함수 (0) | 2020.08.19 |
필기체를 구분하는 분류 ANN 구현 실습 (0) | 2020.08.19 |
Keras 시작하기 - 케라스로 인공신경망 구축 실습 (0) | 2020.08.18 |