학습목표선형회귀(Linear Regression)의 비용을 최소화하는 방법을 코드로 알아본다.핵심키워드선형회귀(Linear Regression)가설(Hypothesis)비용함수(Cost function)경사 하강법(Gradient Descent)볼록 함수(Convex function)
[2.X코드반영] Lab 03: Linear Regression and How to minimize cost 를 TensorFlow 로 구현하기 https://github.com 2.x 버전의 코드로 작성된 자료입니다.
comment
마지막거 실제로 돌려보면 simplfied 해서 b 인자가 생략돼서 cost 값이 0.1667에서 멈추네요;; ㅎㅎ
비공개 글입니다.
비공개 글입니다.
지난 강의에서는 tape에다 각 변수값의 변화를 저장했는데 이번에는 다른 방법으로 하신 이유는 따로 있을까요? 방법이 여러가지 있다는걸 알려주시는건가요?
print("{:6.3f} | {:10.5f}".format(feed_W, curr_cost)) 이것이 무엇인가요?ㅠ 어떻게 만든건지 설명 좀 해주세요~
포맷팅에 대해서..
Gradient descent 구현 이하의 코드에 문제가 있습니다.
생성된 변수는 x_data, y_data인데 for 구문 이하(hypothesis)부터 생성(선언)되지 않은 변수
X, Y가 입력되어 해당 코드를 실행 시키면 X, Y가 정의되지 않았다는 오류 구문이 나타납니다.
따라서, X 를 x_data로, Y를 y_data로 변경해야 합니다.
gradient = tf.reduce_mean(tf.multiply(tf.multiply(W, X) - Y, X))
여기에서 hypothesis 대신에 tf.multiply(W, X)를 쓰신 이유가 있나요??
위에 hypothesis 선언부에서는 * 연산자를 그대로 사용했는데, 이후에는 tf.multiply()를 사용하는 이유가 궁금합니다
# W = tf.Variable(tf.random.normal([1], -100, 100)) 2 version
# W = tf.Variable(tf.random_normal([1], -100, 100)) 1 version
혹시
세번째 예제에서 tf.set_random_seed(0)에서 오류가 발생해서 tf.compat.v1.set_random_seed(0)로 변경해주었는데 버전때문에 발생하는 차이인가요?
친절한 설명 감사합니다. 저는 tensorflow예제를 돌리지 않고 배운것을 사용하는 프로그램에 구현을 하려고 하는데 일반적인 regression 방정식은 어떻게 구하나요?
배운 것을 토대로하면 weight별 cost가 최소가 되는점에서 bias를 추정하면 되는걸까요?
두번째 예제 실행시켰을 시에 cost는 0.16666..., W값은 1.6666...에서 멈춥니다.
말씀대로라면 cost값은 0으로 가야하는게 아닌가요?
혹시 이런 이유를 알 수 있을까요?
numpy()로 결과값 출력이 안된다거나, tf.enable_eager_execution()에서 오류가 생긴다면,
docker restart tf
로 리붓하시고, sh run_~ 파일 실행해서 다시 실행하시면 오류 해결됩니다. 1시간 헤맸음 ㅠㅠ
x_data = [1,2,3,4], y_data = [1,3,5,7] 로 설정했는데 Gradient Descent 코드는 첫번째 예제에서 사용한 X=np.array([1,2,3]) , Y=np.array([1,2,3]) 으로 놓고 돌려서 실제로는 cost 가 0 까지 못 가고 0.1667 에서 멈추는 것 같네요.. 오류가 맞다면 수정 부탁드립니다.
for step in range(300+1) :
hypothesis = W * x_data
cost = tf.reduce_mean(tf.square(hypothesis - y_data))
gradient = tf.reduce_mean(tf.multiply(tf.multiply(W, x_data) - y_data, x_data))
descent = W - tf.multiply(alpha, gradient)
W.assign(descent)
if step % 10 == 0 :
print('{:5} | {:10.4f} | {:10.6f}'.format(step, cost, W))
혹시 해결방법 아시는 분은 댓글 부탁드립니다.