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
반응형
'프로그래밍 > 독학(어려워요 같이해요)' 카테고리의 다른 글
은행 이자가 더 좋을까 아파트를 사는게 더 좋을까 계산하는 파이썬 문제 (0) | 2021.05.08 |
---|---|
while문을 사용하여, 100 이상의 자연수 중 가장 작은 23의 배수를 출력해 보세요 (0) | 2021.05.08 |
다음 코드는 변수 a와 b의 숫자를 비교하여 숫자와 자릿수가 같으면 'strike', 숫자는 서로 포함하나 자릿수가 다르면 'ball'로 카운트하는 프로그램이다. (0) | 2020.05.07 |
tf.keras.models.sequential() 이런식으로 점이 하나 이상 사용되는 부분들이 있는데 이런 경우는 어떻게 해석해야되나요? (0) | 2020.05.06 |
입력데이터가 10 , 20 , 30 일때 출력이 텍스트로 '감자'로 나오도록 학습시키고 싶습니다. (12) | 2020.05.06 |
댓글