본문 바로가기
프로그래밍/독학(어려워요 같이해요)

tensorflow GradientTape 질문 있습니다.

by 노마드데이터랩 2020. 5. 7.
728x90
반응형

오늘은 GradientTape 함수에 관련된 질문이 들어왔습니다.

이 함수는 경사하강법이라는 기법을 위한 미분하는 함수입니다.

다음 코드에 내용을 적어놓았으니 읽어보시기 바랍니다.

화이팅입니다~^^

import tensorflow as tf

W = tf.Variable(2.9)
b = tf.Variable(0.5)
learning_rage = 0.01
x_data = [1,2,3,4,5]
y_data = [1,2,3,4,5]

for i in range(5):
    with tf.GradientTape() as tape:
        hypothesis = W * x_data + b
        cost = tf.reduce_mean(tf.square(hypothesis - y_data))   # hypothesis(가중치)와 정답(y_data)의 손실(cost)

    W_grad, b_grad = tape.gradient(cost,[W,b])  # cost에 대한 미분값 계산
    
    print("W_grad", i,":", W_grad.numpy())
    print("b_grad", i,":", b_grad.numpy())
    W.assign_sub(learning_rage * W_grad)    # 여기서 W 값이 변합니다. W - (learning_rage * W_grad)
    b.assign_sub(learning_rage * b_grad)    # 여기서 b 값이 변합니다. b - (learning_rage * b_grad)

    # W, b값이 변했으니 다음 번 cost 값이 다시 변하겠죠?
    # 그럼 W_grad, b_grad 값도 변하겠죠?
    # 미분에 따라 손실(cost)을 줄여나가는 이 방법을 경사하강법이라고 부릅니다.
    

결과

728x90
반응형

댓글