# 수학 점수에 따른 시험 상위 퍼센테이지 구하기.
_math = [20, 22, 30, 40, 80, 75, 65]
_topPercentage = [75, 70, 60, 50, 1, 5, 15]
차이값을 모두 더하여 리턴한다.
def lossFunction():
diff = 0.0
idx = 0
# 굴려서 평균을 내자.
for val in _math :
result = val * wValue + bias
diff += tf.square(_topPercentage[idx] - result)
idx = idx + 1
return diff
idx = 0
for item in _math :
print("예상 상위 % : "+str((item*wValue.numpy())+bias.numpy()) + " 실제 % : "+str(_topPercentage[idx]) )
idx = idx + 1
import tensorflow as tf
# 수학 점수에 따른 시험 상위 퍼센테이지 구하기.
_math = [20, 22, 30, 40, 80, 75, 65]
_topPercentage = [75, 70, 60, 50, 1, 5, 15]
# 손실함수 : 가장 최적의 a, b 값을 구하기 위한 함수
def lossFunction():
#diff = 0.0
#idx = 0
#굴려서 평균을 내자.
#for val in _math :
# result = val * wValue + bias
# diff += tf.square(_topPercentage[idx] - result)
# idx = idx + 1
#return diff
# 실제값에서 예측값을 뺀 결과를 리턴한다.
# 케라스의 mean squared error
result = _math * wValue + bias
return tf.keras.losses.mse(_topPercentage, result)
# 가중치w 와 bias b를 텐서플로우 변수 타입으로 선언한다.
wValue = tf.Variable(0.1)
bias = tf.Variable(0.1)
# 케라스의 옵티마이저 중 경사하강법을 이용한다. 하강치는 0.01 이다.
opt = tf.keras.optimizers.Adam(learning_rate=0.15)
# 3000번 돌려서 근사치에 도달할떄까지 경사하강법을 적용한다.
for i in range(3000) :
# 손실을 최소화하는 부분인데 손실함수와 텐서플로우 변수가 파라미터이다.
opt.minimize(lossFunction, var_list=[wValue,bias])
# print(wValue.numpy(),bias.numpy())
idx = 0
for item in _math :
print("예상 상위 % : "+str((item*wValue.numpy())+bias.numpy()) + " 실제 % : "+str(_topPercentage[idx]) )
idx = idx + 1
예상 상위 % : 73.43640518188477 실제 % : 75
예상 상위 % : 70.95666313171387 실제 % : 70
예상 상위 % : 61.03769493103027 실제 % : 60
예상 상위 % : 48.63898468017578 실제 % : 50
예상 상위 % : -0.9558563232421875 실제 % : 1
예상 상위 % : 5.243498802185059 실제 % : 5
예상 상위 % : 17.64220905303955 실제 % : 15