Deep Learning keras 모델

강정우·2022년 9월 26일
0

data, ai

목록 보기
18/18
post-thumbnail

준비

  • 앞서 포스팅에서 Data를 다음과 같이 준비를 했었다.

문제와 답을 분리

  • 얘도 글자 타입을 쓰려면 원핫 인코딩, 라벨 인코딩을 실시하여야 한다.

신경망 모델 만들기

1. 신경망의 구조 설계 (병렬적 다층 구조)

  • 우선 뼈대를 만들 import 부터 진행한다.
from tensorflow.keras import Sequential
from tensorflow.keras.layers import InputLayer, Dense
  • 뉴런의 개수를 설정한다.
model = Sequential() # 뼈대 생성
model.add(InputLayer(input_shape=(1,))) 
# 입력 특성의 개수 설정 => 한 사람의 정도 data가 몇개냐? 내 모델이 받아들이는 1개의 data의 모양이 어떻게 생겼냐를 설정하는 것.
model.add(Dense(units=3, activation='linear')) # 1개층의 뉴런 개수 설정 
model.add(Dense(units=3, activation='linear')) # 2개층의 뉴런 개수 설정 
model.add(Dense(units=1, activation='linear')) # 3개층의 뉴런 개수 설정 
  • 뉴런이 여러개 있다면 선형모델이 많아진다 이는 학습능력이나 예층 능력이 올라간다는 뜻이다.
    입력과 출력 모양만 잘 조절하면 결과값을 다 받아볼 수 있다.
  • 만약 제일 밑의 그림처럼 입력이 여러개 있는 것이 멀티모달이라고 한다. 이는 Sequential로는 진행할 수 없다.

2. 신경망 학습, 평가 방법 설정

model.compile(loss="mean_squared_error",
              optimizer="SGD")
  • SGD 보다 좋은 것이 Adam이다.
  • 지금 보면 평가방법을 설정하지 않았는데 딥러닝 모델을 default 값으로 알아서MSE 기법으로 잡아준다. 대신 분류 모델은 따로 넣어주여야한다.

3. 모델 학습 진행 및 결과 시각화

  • 학습 진행
studentHistory = model.fit(X_train, y_train, epochs=100)

  • 저기 한 사이클을 epoch라고 한다. 이때 가중치와 절편을 얘가 알아서 계속 수정한다.
  • 결과 시각화
import matplotlib.pyplot as plt

plt.figure(figsize=(15,5)) # 그림의 크기 설정(가로, 세로)
plt.plot(range(1,101), studentHistory.history['loss'], label='loss') # 라인 그래프 그래기
plt.xlabel("epochs") # X축 title
plt.ylabel("loss") # y축 title
plt.legend() # 범례출력
plt.show()

4. 모델 평가

model.evaluate(X_test, y_test)

  • 선형 모델이 모두 7개라고 볼 수 있다.
profile
智(지)! 德(덕)! 體(체)!

0개의 댓글