우노
[DL] Keras 단순 선형 회귀 튜토리얼 본문
케라스로 구현하는 단순 선형 회귀 튜토리얼
from tensorflow.keras.models import Sequential # keras의 Sequential()을 임포트
from tensorflow.keras.layers import Dense # keras의 Dense()를 임포트
from tensorflow.keras import optimizers # keras의 옵티마이저를 임포트
import numpy as np # Numpy를 임포트
X=np.array([1,2,3,4,5,6,7,8,9]) # 공부하는 시간
y=np.array([11,22,33,44,53,66,77,87,95]) # 각 공부하는 시간에 맵핑되는 성적
# Sequential()로 model이라는 이름의 모델 객체을 만듭니다.
model=Sequential()
# 첫번째 인자 : 출력의 차원
# 두번째 인자 : 입력의 차원
# 이 실습은 1개의 실수 x를 가지고, 1개의 실수 y를 예측하는 단순 선형 회귀이기 때문에 각각 1을 가진다.
# 선형 회귀를 사용할 경우에 활성함수를 'linear' 로 기재합니다.
model.add(Dense(1, input_dim=1, activation='linear'))
# optimer로는 경사 하강법의 일종인 sgd(확률적 경사 하강법)을 사용
# 학습률(learning rate, lr)은 0.01로 합니다.
sgd=optimizers.SGD(lr=0.01)
# 손실 함수(Loss function)은 평균제곱오차 mse를 사용합니다.
model.compile(optimizer=sgd ,loss='mse',metrics=['mse'])
# 주어진 X와 y데이터에 대해서 오차를 최소화하는 작업을 300번 시도합니다.
model.fit(X,y, batch_size=1, epochs=300, shuffle=False)
- epoch는 300이지만, 어느 순간 오차가 더 이상 줄어들지 않는데, 이는 오차를 최소화하는 가중치 W와 b를 찾았기 때문으로 추정이 가능합니다.
Epoch 1/300
9/9 [==============================] - 0s 37ms/step - loss: 294.9226 - mean_squared_error: 294.9226
... 중략 ...
Epoch 167/300
9/9 [==============================] - 0s 1ms/step - loss: 2.1460 - mean_squared_error: 2.1460
... 중략 ...
Epoch 300/300
9/9 [==============================] - 0s 1ms/step - loss: 2.1460 - mean_squared_error: 2.1460
- 이제 모델을 사용해 9시간 30분을 공부했을 때의 시험 성적을 예측 해봅시다.
- model.predict()은 학습이 완료된 모델이, 입력된 데이터에 대해서 어떤 값을 예측하는지를 보여줍니다.
- 9시간 30분을 공부하면 약 98.5점을 얻는다고 예측하고 있습니다.
print(model.predict([9.5]))
# [[98.556465]]
'AI > Deep Learning' 카테고리의 다른 글
[DL] 간단한 순전파와 역전파 예제 (5) | 2021.01.12 |
---|---|
[DL] 파라미터와 하이퍼파라미터의 차이 (0) | 2021.01.12 |
[DL] Weight matrix 차원 공식 (0) | 2021.01.11 |
[DL] 활성화 함수의 역할 및 종류 (0) | 2021.01.10 |
[DL] 경사 하강법(Gradient Descent) (0) | 2020.07.30 |
Comments