비용함수(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에서 경사하강법을 구현한 방식은 다음과 같이 정리할 수 있다.

  1. 가설함수 정의
  2. 비용함수 정의
  3. 학습률 정의
  4. 경사(Gradient) 구하기
  5. 하강(Descent) 구하기
  6. 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 계산을 수행한다.

코드 보러가기



별도의 출처 표시가 있는 이미지를 제외한 모든 이미지는 강의자료에서 발췌하였음을 밝힙니다.

댓글남기기