텐서플로우 첫걸음: 도구

다음 그림은 텐서플로우 도구함의 현재 계층구조를 보여 줍니다.

텐서플로우 도구함의 현재 계층구조 에스티메이터가 맨 위에 있습니다.

그림 1. 텐서플로우 도구함 계층구조

다음 표에는 여러 레이어의 목적이 요약되어 있습니다.

도구함 설명
에스티메이터(tf.estimator) 높은 수준의 OOP API
tf.layers/tf.losses/tf.metrics 일반 모델 구성요소용 라이브러리
텐서플로우 낮은 수준의 API

텐서플로우는 다음 두 요소로 구성됩니다.

이 두 구성요소는 자바 컴파일러 및 JVM과 유사합니다. JVM이 여러 하드웨어 플랫폼에서 구현되는 것과 마찬가지로 텐서플로우도 여러 CPU와 GPU에서 구현됩니다.

어느 API를 사용해야 하나요? 문제를 해결하는 최고 수준의 추상화를 사용해야 합니다. 추상화 수준이 높을수록 더 사용하기 쉽지만 (설계상) 유연성이 떨어집니다. 먼저 최고 수준의 API로 시작하여 모든 작업을 실행하는 것이 좋습니다. 특별한 모델링 문제를 해결하기 위해 더 유연한 추상화가 필요하면 한 수준 아래로 이동합니다. 각 수준은 낮은 수준의 API를 사용하여 제작되므로 계층구조를 낮추는 것이 합리적입니다.

tf.estimator API

머신러닝 단기집중과정 내 대부분의 실습에서 tf.estimator를 사용합니다. 낮은 수준의(원시) 텐서플로우를 사용해도 실습의 모든 작업을 실행할 수 있지만 tf.estimator를 사용하면 코드 행 수가 크게 줄어듭니다.

tf.estimator는 scikit-learn API와 호환됩니다. scikit-learn은 Python의 매우 인기 있는 오픈소스 ML 라이브러리로, Google 직원을 비롯하여 100,000명이 넘는 사람들이 이용하고 있습니다.

tf.estimator로 구현된 선형 회귀 프로그램의 형식은 대체로 다음과 같습니다.

import tensorflow as tf

# Set up a linear classifier.
classifier = tf.estimator.LinearClassifier()

# Train the model on some example data.
classifier.train(input_fn=train_input_fn, steps=2000)

# Use it to predict.
predictions = classifier.predict(input_fn=predict_input_fn)