본문 바로가기
AI

[Deep Learning] 딥러닝 Tensorflow 기본, loss

by shur_ 2023. 9. 4.

레모네이드 판매량 예측

 

import pandas as pd

레모네이드 = pd.read_csv('lemonade.csv')
레모네이드

 

import tensorflow as tf
import pandas as pd

# 데이터 준비
레모네이드 = pd.read_csv('lemonade.csv')
독립 = 레모네이드[['온도']]
종속 = 레모네이드[['판매량']]

print(독립.shape, 종속.shape)

 

# 모델 준비
X = tf.keras.layers.Input(shape = [1])
Y = tf.keras.layers.Dense(1)(X)
model = tf.keras.Model(X, Y)
model.compile(loss = 'mse')

 

X = tf.keras.Input(shape = [1]) 로도 나타낼 수 있다. 최신 tensorflow에서 간단해졌다.

tf.keras.Model(X,Y)도 원래는 tf.keras.models.Model(X,Y) 였다고 한다.

 

# 데이터로 모델 학습
model.fit(독립, 종속, epochs = 1000)

 

학습을 쭉 진행한다. 'epochs' 값을 1000을 줬으므로 1000번 학습을 진행한다.

눈 여겨 볼 점은 loss 값이 계속 작아지고 있는 것이 보인다.

언제까지 학습할까? loss가 더 이상 낮아지지 않을 때까지 학습한다.

 

loss가 낮을 수록 좋다!

 

 

model.predict([[15]])

온도가 15일 때 예측을 해보면 30.928593이 나온다.

 

model.get_weights()

get_weights() 함수를 사용하면 w(weight)와 b(bias) 값을 얻을 수 있다.

이를 통하여 찾은 모델을 나타낼 수 있다.

 

온도 = 15
판매량 = 1.8796842 * 온도 + 2.7333307
판매량

온도가 15일 때 판매량을 출력해보면 30.9285937이 나온다.

 

 

 

 


 

loss란 무엇인가.

주어진 데이터를 통해 모델은 예측을 한다.

만약 판매량의 실제 데이터가 [40, 42, 44, 46] 이었는데 예측 값은 [35. 40, 45, 50] 이 나왔다면 (예측값 - 실제값)을 Error라고 한다. Error는 [-5 -2 1 4] 가 된다. 이 Error의 제곱의 합의 평균(mse)이 loss다.

 

학습시킬 때 loss가 작아질 때까지 하는 이유가 여기있다.

loss가 작을 수록 Error가 작은 것이므로 더 완벽하게 학습되었다고 생각할 수 있겠다.

 

댓글