티스토리 뷰

인턴십 완전 종료까지 계속 자료를 보내주신다고 하여, 감사한 마음으로 받고 있다. 

오늘은 복수의 .csv 파일로부터 데이터를 적재하고 전처리를 합치는 함수를 살펴보자. 

def csv_reader_dataset(filepaths, repeat=None, n_readers=5, n_read_threads=None, shuffle_buffer_size=10000, n_parse_threads=5, batch_size=32):
    dataset = tf.data.Dataset.list_files(filepaths).repeat(repeat)
    dataset = dataset.interleave(lambda filepath: tf.data.TextLineDataset(filepath).skip(1), cycle_length=n_readers, num_parallel_calls = n_read_threads)
    dataset = dataset.shuffle(shuffle_buffer_size)
    dataset = dataset.map(preprocess, num_parallel_calls = n_parse_threads)
    dataset = dataset.batch(batch_size)
    return dataset.prefetch(1)

def csv_reader_dataset(filepaths, repeat=None, n_readers=5, n_read_threads=None, shuffle_buffer_size=10000, n_parse_threads=5, batch_size=32):

filepaths는 원본 데이터의 경로

repeat = None이니 반복은 없음

n_readers=5 각 파일을 5줄씩 읽겠다는 뜻

n_read_threads는 뭔지 모르겠다.

shuffle_buffer_size 셔플에 사용할 버퍼의 크기(여기서는 1만)

batch size는 데이터 세트를 지정한 숫자만큼 묶어줄 수 있다(여기서는 32). 

	dataset = tf.data.Dataset.list_files(filepaths).repeat(repeat)

두 번째 줄에서는 filepath에서 셔플한 리스트를 dataset에 저장한다. 

	dataset = dataset.interleave(lambda filepath: tf.data.TextLineDataset(filepath).skip(1), cycle_length=n_readers, num_parallel_calls = n_read_threads)

interleave 메소드는 랜덤으로 만들어진 데이터셋(여기서는 5개)에서 번갈아서 데이터를 읽어올 것이다. 

TextLineDataset은 5개 데이터셋의 파일을 랜덤으로 읽어서 한 줄로 되어 있는 데이터셋 5개를 만들 것이다. 

	dataset = dataset.shuffle(shuffle_buffer_size)

buffer size만큼 셔플한다. 1만 번 섞게 될 것이다. 

	dataset = dataset.map(preprocess, num_parallel_calls = n_parse_threads)

교재에는 map 메서드에 대한 설명이 있나본데 내가 받은 자료에는 없다. 아이템을 변환하는 메소드인 듯.

지금 보는 책을 다 보면 핸즈온 머신러닝 2판을 사서 공부하면서 추가해야겠음. 

	dataset = dataset.batch(batch_size)
return dataset.prefetch(1)

batch 메서드로 32개의 묶음(batch)을 반환한다. prefetch는 정확히 뭔지 모르겠는데 아마 이것과 유사한 기능을 수행하는 모양이다. 

 

 

함수를 필사한 다음에 한 줄씩 의미를 뜯어보았다. 

일단 여기까지. 

'공부' 카테고리의 다른 글

210925 개인공부  (0) 2021.09.26
210924 개인공부  (0) 2021.09.24
R Computing DAY 1: R 입문하기  (0) 2021.04.01
20201110 DAY08 3차원 그래프 그리기  (0) 2020.11.10
20201028 sklearn 선형회귀모델 예제 중  (0) 2020.10.28