인공지능

[모두의 딥러닝] lab 04-2. Loading Data from File

여니두 2019. 4. 6.

* 많은 multi-variable을 파일에서 직접 데이터를 읽어와보자!

 

- 데이터가 많을 때, 텍스트 파일을 불러와 쓴다.

- .csv 파일에 보통 정리를 많이 한다.

 

- 가장 간단하게 파일을 읽어오는 방법: numpy의 loadtxt() 함수

- loadtxt(파일이름, 구분자, 데이터타입)

- 단점: 전체 데이터가 같은 데이터 타입이어야 함!

- xy를 ':(콜론)'으로 슬라이싱하여 x_data와 y_data에 배정

  ex) xy[:-1] = 전체의 -1

  * tense를 다룰 때 슬라이싱 많이 사용

 

- 값이 맞게 배정되었는지 한번 출력해보고 사용하기!

** python의 슬라이싱

- b[:, 1]

: comma 앞의 값은 array의 row

: 콜론 하나만 있으면 전체 값

: 콜론 뒤의 1 = 인덱스 1 값을 가져오게 됨

 

- 데이터의 개수에 맞게 3이라는 shape를 X에 배분

- W

: 3개가 들어와서(X 개수) 1개의 결과물(Y 개수)을 내도록 Weight 설정

- b

: 출력값(Y 개수)이 1개이므로 1을 줌

 

- 학습

 

- 학습 후에 자신의 점수를 넣어서 예측해볼 수 있음.

 

배운 것

1. numpy를 이용하여 파일 읽어오기

2. 학습한 것을 가지고 점수 예측

 

 

 

Queue Runners

** 파일이 너무 커서 메모리에 한번에 올리기 힘들 때?

--> numpy를 이용하기는 힘들 것.

- Queue Runners

: 텐서플로우에서 제공하는 시스템

: 여러 개의 파일에서 읽어올 때 큐에 쌓은 후 Reader로 연결하여 양식에 맞게 Decoder를 한다.

: 필요한 batch만큼 큐에서 읽어와서(꺼내와서) 학습을 시킨다.

: 큰 데이터를 읽고 쓸 때 유용 

 

- 진행과정 (3 step)

: 파일들의 리스트를 만들어 줌. (기본)

: shuffle, name 등도 줄 수 있음.

 

: 파일을 읽어 올 Reader 정의

: TextLineReader()

(Binary를 읽는 리더도 있음)

: 텍스트 파일을 읽어올 때 기본적으로 써 주는 것

 

* value 값을 어떻게 parsing할 것인가?

: decode_csv() 를 통해서 함.

- recode_defaults=

: 읽어 올 때 필드에 대한 값이 어떤 데이터 타입인가를 정해줄 수 있음.

ex) [0.] : float 데이터 타입

 

 

- tf.train.batch

: 값을 batch라는 일종의 펌프같은 것으로 읽어온다.

: tf.train.batch(X_DATA, Y_DATA, batch_size=한번에 몇 개 가져올 것인지)

: 그 이후의 복잡한 부분은 텐서플로우가 다 알아서 해 준다.

: train_x_batch와 train_y_batch 또한 tense이기 때문에 sess.run()을 해 준다.

--> x_batch, y_batch를 추후에 feed_dict로 값을 넘겨주면 된다.

 

- 소스코드

 

shape 주의!!

- session 안에서 batch를 펌프질을 하듯 데이터를 뽑아온다.

 

- shuffle_batch

: batch의 순서가 섞이면 좋겠을 때 사용!

 

댓글