tf.data Module
- 데이터 입력 파이프라인을 위한 모듈
- 모델 학습/평가를 위한 대용량 데이터셋을 제공(feeding)하기 위한 모듈
- 전처리, 배치 크기, shuffling등을 한번에 처리
- tf.data.Dataset 추상클래스에서 상속된 여러 가지 클래스들을 제공
Tensor - Data
- TensorFlow의 기본 data type
- Tensor를 이용해 데이터를 관리
- 모델이 학습, 평가할 때 Tensor type이어야 하며 ndarray를 넣어주는 경우 내부적으로 tf.Tensor로 변형해서 처리
import tensorflow as tf
tf.constant()
t = tf.constant([1,2,3], dtype="float32")
a = t.numpy()
t2 = tf.constant(a)
t3 = tf.convert_to_tensor(a)
Dataset 분할
dataset = tf.data.Dataset.from_tensor_slices(raw_data1)
dataset2 = tf.data.Dataset.from_tensor_slices((raw_data1, raw_data2))
dataset3 = dataset.take(3)
Dataset 처리
shuffle
dataset4 = dataset.shuffle(10)
batch
- batch로 제공할 데이터의 개수가 설정한 size 단위로 제공
- 주로 2의 배수로 선정
dataset5 = dataset.batch(3, drop_remainder = True)
repeat
dataset7 = dataset.repeat(2)
Data set 전처리
map
dataset9 = dataset.map(mapping_func)
dataset11 = dataset.map(lambda )
filter
dataset13 = dataset.filter(filter_func)
def filter_func(x):
return x%2 == 0
dataset14 = dataset.filter(lambda )
종합
dataset_final = tf.data.Dataset.from_tensor_slices(raw_data)\
.filter(lambda x:x>=0)\
.map(lambda y:y+10)\
.shuffle(raw_data.size)\
.batch(3)