모두를 위한 딥러닝 시즌2 - TensorFlow

Lab-04 Multi variable linear regression LAB

sososoy 2021. 10. 27. 16:59

변수 3개 각각에 해당하는 w값 3개 필요

 

x: 입력 데이터

y: 출력 데이터, 예측값, 레이블

 

 

초기값: 1 / 일반적으로 랜덤값을 준다.

w 3개, b 1개

learning rate: 매우 작은 값

cost = 오차 제곱의 평균값

w1, w2, w3, b 변수에 대한 정보를 tape에 저장하고, tape의 gradient값(기울기 값) 정한다.

update를 위해 assign_sub 함수를 사용했다. (learning_rate를 곱한 값을 뺀다.)

1001번 반복 실행하고 50번에 한 번씩 출력한다.

i값: 50만큼씩 쭉 증가한다.

cost값: 급속히 줄어들다가 일정 구간에서는 줄어들지 않는다.

 

data가 한 matrix에 저장돼있다.

slice는 ','를 기준으로 앞 부분은 행, 뒷 부분은 열을 뜻한다.

':' 기준으로 앞뒤로 아무것도 안 써있을 때는 전체 row를 뜻한다.

뒷부분은 column을 뜻하는데 첫 컬럼부터 마지막 column을 제외한 값까지를 뜻한다.

즉 x1, x2, x3 데이터를 뜻한다.

y는 마지막 데이터, 마지막 column, 즉 y 데이터를 뜻한다.

 

x column이 3개이므로 weight 매트릭스의 row는 3개가 필요하고, 출력 값으로 1개의 열이 필요하다.

bias는 1개가 필요하다.

 

predict, 즉 예측 함수는 matmul(X, W) + b이다. 이때 b는 생략할 수도 있다.

 

 

x data는 슬라이싱을 통해 5행 3열 크기의 매트릭스가 된다.

y data는 슬라이싱을 통해 5행 1열 크기의 매트릭스가 된다.

 

x: 입력

y: 출력, label, 정답

 

w의 행 수는 x의 열 수만큼, 즉 3이고 w의 열 수는 출력이므로 1이다.

b는 출력값으로 크기가 1이다.

 

for문을 순회하면서 gradient descent 알고리즘을 통해 w와 b 값을 지속적으로 업데이트한다.

한 번 도는 것을 epoch라고 한다.

여기선 2001회 epoch를 순회한다.

 

epoch가 순회하면서 cost가 매우 큰 값에서 급격히 줄어들다가 더이상 잘 줄어들지 않는다.

 

 

변수의 개수만큼 weight가 필요하다.

각 w에 따라 따로 할당해주어야 한다.

 

H(X) = XW 수식에 따라 상황에 따라 한 줄로 쉽게 표현이 가능하다. 

 

 

 

출처: https://youtu.be/tmfo04t664Q

모든 이미지 출처: http://bit.ly/2LQMKvk