참고 : https://developers.google.com/machine-learning/crash-course/first-steps-with-tensorflow/toolkit
텐서플로우 첫걸음 : 도구
텐서플로우 도구함 현재 계층 구조
- 1층 : CPU, GPU, TPU 커널은 하나 이상의 플랫폼에서 작동
- 2층 : Tensorflow C++
- 3층 : Tensorflow Python C++ 커널을 래핑하는 오퍼레이션 제공
- 4층 : tf.layers, tf.losses, tf.metrics 일반 모델 구성요소용 재사용 가능 라이브러리
- 5층 : Tensorflow Estimators 높은 수준의 개체 지향 API
텐서플로우 도구함 계층구조
- 텐서플로우 : 낮은 수준의 API
- tf.layers/tf.losses/tf.metrics : 일반 모델 구성요소용 라이브러리
- 에스티메이터(tf.estimator) : 높은 수준의 OOP API
텐서플로우 구성 요소
- 그래프 프로토콜 버퍼
- 분산된 그래프를 실행하는 런타임
이 구성요소는 자바 컴파일러 및 JVM과 유사하다. JVM이 여러 하드웨어 플랫폼에서 구현되는 것과 마찬가지로 텐서플로우도 여러 CPU, GPU에서 구현된다.
어느 API를 사용해야 하는가?
높은 수준의 추상화를 사용해야한다. 추상화 수준이 높을수록 더 사용하기 쉽지만, 유연성이 떨어진다. 그래서 먼저 최고 수준의 API로 시작하여 모든 작업을 실행하는 것이 좋다.
특별한 모델링 문제를 해결하기 위해 더 유연한 추상화가 필요하면, 한 수준 아래로 이동한다. 각 수준은 낮은 수준의 API를 사용하여 제작되므로 계층구조를 낮추는 것이 합리적이다.
tf.estimator API
tf.estimator은 많은 실습에서 사용된다. 낮은 수준의 텐서플로우를 사용해도 실습의 모든 작업을 실행할 수 있지만, tf.estimator를 사용하면 코드 행 수가 크게 줄어들게 된다.
tf.estimator는 scikit-learn API와 호환된다. scikit-learn은 Python의 매우 인기 있는 오픈소스 ML 라이브러리로, 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)