데이터 로드
1) 텍스트 파일(csv 파일 등), 고정 길이의 레코드를 가진 이진 파일, 텐서플로의 TFRecord 포맷을 사용하는 이진 파일
2) SQL 데이터 베이스, 구글 빅쿼리
데이터 전처리
1) 정규화
2) 인코딩: 원-핫 인코딩, BoW 인코딩, 임베딩 등
-> 사용자 정의 전처리 층, 표준 전처리 층 사용
tf.data.Dataset.from_tensor_slices()
: 텐서를 받아서 데이터셋 생성
repeat()
: 몇 번 반복?batch()
: 배치 사이즈 결정drop_remainder=True
: 마지막 배치가 길이가 모자랄 경우, 버린다.map()
: 데이터셋의 각 아이템에 함수 적용num_parallel_calls
: 여러 스레드로 나누어서 속도를 높인다.apply()
: 데이터셋 전체에 함수 적용filter()
: 데이터셋 필터링take()
: 몇개만 가져옴shuffle(buffer_size=n, seed=m)
: 샘플을 섞음buffer_size
개수 만큼 추출해서 버퍼에 채우고 -> 랜덤하게 하나씩 꺼내서 반환하고 -> 다시 원본 데이터셋에서 새로운 아이템 추출해서 버퍼 채우고 -> 반복.shuffle()
사용list_files()
: 파일 경로를 섞은 데이터셋을 반환interleave()
: 한번에 정해진 개수만큼의 파일을 한 줄씩 번갈아 읽음 -> 코드 살펴보기
prefetch(1)
: 한 배치로 훈련이 이루어질 때 다음 배치가 미리 준비됨csv_reader_dataset()
: 훈련 세트 만들기. (반복 지정 X)fit()
, predict()
tf.io.TFRecordWriter
, tf.data.TFRecordDtataset
options
매개변수SerializeToString()
: 직렬화ParseFromString()
: 파싱SerializeToString()
: 직렬화
tf.io.parse_single_example()
: 하나씩 파싱
tf.io.parse_example()
: 배치 단위로 파싱
Lambda
layer로 표준화 하거나,tf.lookup.StaticVocabularyTable()
tf.one_hot()
: 원-핫 인코딩keras.layers.Embedding()
tf.nn.embedding_lookup()
: 임베딩 행렬에서 주어진 인덱스에 해당하는 행을 찾음keras.layers.TextVectorization()
: 입력에 있는 각 단어를 어휘 사전에 있는 인덱서를 인코딩keras.layers.Normalization()
, keras.layers.TextVectorization()
keras.layers.Discretization()
: 연속적인 데이터를 구간으로 나누거, 각 구간을 원-핫 벡터로 인코딩PreprpcessingStge
: 여러 전처리 층 연결: 단어 카운트로 표시.
tensorflow_datasets
라이브러리tf.lookup.StaticVocabularyTable()
에서 oov 버킷을 지정하는것과 같은 기능을 하는 sklearn 함수는 없을까? 나는.. 일일히 범위 지정했는데ㅠ 그냥 onehotencoder는 무시 기능 밖에 없던데..