글 작성자: 만렙개발자

아무 도움 안되는 똥글인듯

여기서 다루는 것

TensorFlow (tf.estimator) + GCP (Google Cloud Platform)

기초

  • Tensorflow는 수학 연산을 표현하는 노드들과 데이터들의 배열을 나타내는 엣지로 구성된 그래프로 작동합니다.
  • 가장 기본적인 데이터 타입은 tensor로, Rank 0은 스칼라, Rank 1은 벡터, Rank 2는 배열, Rank 3 이상은 텐서라고 합니다.
  • tf.estimator는 High-level API 입니다.

모델 빌드하기

  • 먼저 모델을 설정해야합니다. 모델은 아래와 같은 것에 따라 다르게 설정됩니다.
    1. 분류 문제 / 회귀 문제
    2. 레이블(label)은 어떤 것인가?
    3. 특징(feature)은 어떤 것인가?
  • 모델을 다루는 과정
    1. 학습
    2. 평가
    3. 예측

tf.estimator 예제 코드

import tensorflow as tf

featcols = [ tf.feature_column.numeric_column("sq_footage") ] # feature column을 정의하는 부분. numeric한 컬럼, 이름을 대입해줌.

model = tf.estimator.LinearRegressor(featcols, './model_trained') # Linear Regression model. feature column과 output directory를 입력해준다.

def train_input_fn():
    ...
    return features, labels

model.train(train_input_fn, steps=100) # 학습 데이터 전체를 넣는 것이 아니라, feature랑 label을 리턴하는 함수를 입력하여 메모리 효율을 높임. steps는 gradient descent를 반복할 횟수를 결정

def pred_input_fn():
    ...
    return features
out = model.predict(pred_input_fn) # 위와 마찬가지로 함수의 형태로 입력. 에측 결과가 out으로 리턴

encoding categorical data

위에서는 numeric 컬럼을 사용했지만, 그런 데이터가 아닌 경우 encoding을 해야한다. 여기서는 3가지 방법에 대해서 소개한다.

 

1. 완전한 vocabulary_list를 아는 경우 (분류할 수 있는 모든 값)

 

tf.feature_column.categorical_column_with_vocabulary_list('zipcode',
                                                       vocabulary_list = ['12345', '23456', '34567', '45678])

 

2. 데이터가 학습을 위해 인덱싱이 되어있는 N까지의 길이로 끊는 것

 

tf.feature_column.categorical_colu mn_with_identity('stateId',
                                                num_buckets = 50)

 

 

3. one-hot encoding

 

tf.feature_column.indicator_column( my_categorical_column )