Closed Lay4U closed 4 years ago
# 4.6 텐서플로우를 이용해서 3차 함수 회귀선 구하기 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt import random X = [0.3, -0.78, 1.26, 0.03, 1.11, 0.24, -0.24, -0.47, -0.77, -0.37, -0.85, -0.41, -0.27, 0.02, -0.76, 2.66] Y = [12.27, 14.44, 11.87, 18.75, 17.52, 16.37, 19.78, 19.51, 12.65, 14.74, 10.72, 21.94, 12.83, 15.51, 17.14, 14.42] # a, b, c, d를 랜덤한 값으로 초기화합니다. a = tf.Variable(random.random()) b = tf.Variable(random.random()) c = tf.Variable(random.random()) d = tf.Variable(random.random()) # 잔차의 제곱의 평균을 반환하는 함수입니다. def compute_loss(): y_pred = a * X*X*X + b * X*X + c * X + d loss = tf.reduce_mean((Y - y_pred) ** 2) return loss optimizer = tf.keras.optimizers.Adam(lr=0.07) for i in range(1000): # 잔차의 제곱의 평균을 최소화(minimize)합니다. optimizer.minimize(compute_loss, var_list=[a,b,c]) if i % 100 == 99: print(i, 'a:', a.numpy(), 'b:', b.numpy(), 'c:', c.numpy(), 'd:', d.numpy(), 'loss:', compute_loss().numpy()) line_x = np.arange(min(X), max(X), 0.01) line_y = a * line_x * line_x * line_x + b * line_x * line_x + c * line_x + d # 그래프를 그립니다. plt.plot(line_x,line_y,'r-') plt.plot(X,Y,'bo') plt.xlabel('Population Growth Rate (%)') plt.ylabel('Elderly Population Rate (%)') plt.show()
이 코드에서
y_pred = a * X*X*X + b * X*X + c * X + d
optimizer.minimize(compute_loss, var_list=[a,b,c,d]) 가 맞는거 같습니다.
optimizer.minimize(compute_loss, var_list=[a,b,c,d])
피드백 감사드립니다. 첫번째 줄은 #1 에서 수정되었습니다. 두번째 줄을 수정 후 완료처리하겠습니다.
이 코드에서
y_pred = a * X*X*X + b * X*X + c * X + d
optimizer.minimize(compute_loss, var_list=[a,b,c,d])
가 맞는거 같습니다.