경사하강법 구현 과정
# 학습률 정의
learning_rate = 0.01
# 본격적인 경사하강법
for i in range(1000):
with tf.GradientTape() as tape:
hypothesis = W * x_data + b
cost = tf.reduce_mean(tf.square(hypothesis - y_data))
W_grad, b_grad = tape.gradient(cost, [W, b])
W.assign_sub(learning_rate * W_grad) # 모델 파라미터 업데이트
b.assign_sub(learning_rate * b_grad) # 모델 파라미터 업데이트
if i % 10 == 0:
print('{:5} | {:10.4} | {:10.4} | {:10.6f}'.format(i, W.numpy(), b.numpy(), cost))
tape
에 기록을 하는 개념이라고 생각하면 된다.
assign_sub
는 파이썬에서의 a -= b
연산과 동일하다.
마지막에는 중간 계산 과정을 보여주기 위해 10번마다 파라미터를 출력하도록 했다.
댓글남기기