비용함수(Tensorflow 미사용)
Tensorflow를 사용하지 않고 비용함수를 구현해보자.
X = np.array([1, 2, 3])
Y = np.array([1, 2, 3])
def cost_func(W, X, Y):
c = 0
for i in range(len(X)):
c += (W * X[i] - Y[i]) ** 2
return c / len(X)
매우 간단하다. 다음 코드로 W 값에 따른 비용함수 값을 구할 수 있다.
for feed_W in np.linspace(-3, 5, num=15):
curr_cost = cost_func(feed_W, X, Y)
경사하강법(Tensorflow 사용)
Tensorflow에서 경사하강법을 구현한 방식은 다음과 같이 정리할 수 있다.
- 가설함수 정의
- 비용함수 정의
- 학습률 정의
- 경사(Gradient) 구하기
- 하강(Descent) 구하기
- W 업데이트
for step in range(1000):
hypothesis = W * X # 1
cost = tf.reduce_mean(tf.square(hypothesis - Y)) # 2
alpha = 0.01 # 3
gradient = tf.reduce_mean(tf.math.multiply(tf.math.multiply(W, X) - Y, X)) # 4
descent = W - tf.math.multiply(alpha, gradient) # 5
W.assign(descent) # 6
tf.math.multiply
를 사용하면 vector의 elementwise 계산을 수행한다.
별도의 출처 표시가 있는 이미지를 제외한 모든 이미지는 강의자료에서 발췌하였음을 밝힙니다.
댓글남기기