머신러닝,딥러닝/tensorflow

lec04 multi-variable linear regression tensorflow

mcdn 2021. 1. 18. 16:03
반응형

recap 

hypothesis 

cost function 

gradient descent algorithm 

3가지를 기억하고 있으면 지금까지 잘 배운 것 

 

 

predictin gexam score 

regression using one input 

now we are going to regression using three inputs (x1, x2, x3) -> Y final score 

 

now we have several .. multi -varaible 

 

to calculate it we use matrix 

matrix multiplication 

 

hypothesis using matrix 

우리가 원하는 값은 오른쪽이고 매트릭스 사용하면 왼쪽 처럼 간단하게 표현 가능 

 

순서가 바뀌어도 같은 식이니까 오케이임 

매트릭스 쓸 때 x를 보통 앞부분에 둔다. 

 

X 대문자로 쓰는 것은 매트릭스 표현이라는 것으로 쓰이기도 

 

 

실제 데이터에 적용해볼까요 

 

 

이런 점수 집합을 인스턴스라고 부른다. 

근데 인스턴스 1000개면 1000개를 반복해야 한다. 

 

놀랍게도 이렇게 만들면 w 는 그대로 두고 옆에 인스턴스만 계속 길어진다!! 

 

[5, 3] [3, 1] [5, 1]

 

5개의 인스턴스 3개 점수 

3개 점수 따른 가중치 

5개 인스턴스와 결과는 하나 

 

가운데 3 은 같아야 하고 뒤에 끝 5, 1은 마지막에 나와야 한다. 

그래서 ? ? 을 채울 수 있게 된다. 

3, 1 이겠지 

 

numpy에서는 [n, 3] 이렇게 인스턴스 아직 미정 시 -1, none으로 둔다. 

 

얘도 마찬가지 ?  ? 은 3 2 로 채울 수 있다. 

정리하면 H(x) = Wx + b 

이렇게 사용하지만 구현하게 되면 

H(X) = XW 

가 된다. 

구현은 다르지만 수학적 원리는 같다. 

 

 

-------------

placeholder를 만들고

하나의 값을 준다. hypothesis 는 식 그대로 사용해서 보여준다. 

 

 

hypothesis 있으면 hypothesis - y square 이대로 하고 sesion initilizer, ses.run feed_dict 로 학습한다. 

 

하지만 이건 이제 사용하지 않는다. 

이제는 매트릭스로 인스턴스를 한꺼번에 줄 수 있다. 

이제부터는 x1, x2 가 아닌 x_data로 충분하다. 

 

x 는 none, 3 -> none : 인스턴스 개수 3 은 x1, x2 x3 세개 엘레멘트니까 

Y 는 none, 1 -> 마찬가지로 none, 대신 결과는 한개니까 1 

 

아무튼 그래서 이렇게 매트릭스를 사용하면 x 하나씩 설정 노노 해도 된다. 

 

 

 

 

< 데이터를 파일로부터 읽어오기 > 

 

가장 쉽게 하는 방법은 loadtxt 함수 사용하기 

csv파일은 데이터를 콤마로 구분한 것 

 

단점은 각 데이터 타입이 모두 통일되어야 한다는 점 

 

나누는건 슬라이싱 방법 

파이썬 슬라이싱 

넘피로 가면 더 강력해진 슬라이싱이 가능하다. 

 

따라서 x-data = xy[:, 0:-1]

마지막 빼고 모두 가져온다. 

y_data = xy[:, [-1]]

마지막만 가져온다. 

읽어왔다. 

그러면 x_data Y-DATA 부분만 달라지고 대부분 비슷하다. 

 

 

학습을 다 하고 나서는 your score will be 에다가 내 점수 물어볼 수 있다. 

다른 친구 점수도 물어볼 수 있다. 

 

파일이 굉장히 커서 한번에 읽어오기 힘들면 

tensorflow queue ruunner를 사용할 수 있다. 

 

파일을 배치 만큼 조금씩 꺼내서 읽어낼 수 있다. 

복잡해 보이지만 간단하게 싸용할 수 있다. 

 

1. 우선 파일 데이터들을 불러오고 

2. reader 정의 

3. value 값을 어떻게 파싱할 것인지.. decode_csv를 이용한다. 

 

배치를 보면 읽어온 데이터를 가져올 수 있다. 

최종 코드 

 

batch - 10개씩 펌프해오기 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형