# 오차함수를 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에 수렴한다.