더북(TheBook)
# 오차함수를 W로 미분한 값
    W_diff = -( 1/len( x_data ) ) * sum( x_data * ( error ) )

# 오차함수를 b로 미분한 값
    b_diff = -( 1/len( x_data ) ) * sum( error )

# 학습률을 곱해 기존의 W 값 업데이트
    W = W - lr * W_diff

# 학습률을 곱해 기존의 b 값 업데이트
    b = b - lr * b_diff

# 100번 반복될 때마다 현재의 W 값, b 값 출력
    if i % 100 == 0:
        print( "epoch=%.f, 기울기=%.04f, 절편=%.04f" % ( i, W, b ) )

 

결과

epoch=0, 기울기=3.3250, 절편=0.8250
epoch=100, 기울기=3.4651, 절편=4.0088
epoch=200, 기울기=3.1860, 절편=5.2037
epoch=300, 기울기=3.0744, 절편=5.6816
epoch=400, 기울기=3.0297, 절편=5.8727
epoch=500, 기울기=3.0119, 절편=5.9491
epoch=600, 기울기=3.0048, 절편=5.9796
epoch=700, 기울기=3.0019, 절편=5.9919
epoch=800, 기울기=3.0008, 절편=5.9967
epoch=900, 기울기=3.0003, 절편=5.9987

실행 결과를 보면, 반복이 늘어나면서 기울기와 절편이 3과 6에 수렴한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.