1. TensorFlow API Hierarchy

(1) Hardware 층
- 여러 하드웨어 플랫폼에서의 실행을 위한 것으로 보통 크게 다룰 일이 없음

(2) Core TensorFlow(C++ API)
- 텐서플로 기반으로 커스텀된 앱을 만들 수 있는 계층

(3) Core TensorFlow(Python API)
- 사칙연산, 행렬곱 등 수치처리를 위한 코드
- 변수 및 텐서 생성, 차원 설정 등의 작업이 이 계층에서 가능함

(4) tf.layers / tf.losses / tf.metrics :
- 커스텀 뉴럴네트워크를 만드는데 유용한 계층
→ 많은 경우에는 학습, 평가, 적용이 표준화된 방법으로 적용이 가능하기 때문에 커스텀이 필요하진 않음
- 활성함수를 통한 hidden layer 계층 만들기(tf.layers), CrossEntropy 계산 등의 작업(tf.losses),
RMSE와 같은 평가지표의 계산(tf.metrics)이 가능함

(5) tf.estimator
- 최상위 계층으로 모델을 학습시키고, 평가하고, 저장하고, 적용하는 계층

2. Lazy Evaluation

위의 예시에서처럼 a와 b를 더하라고 지정을 해주어도
이것만으로는 바로 결과가 나타나지 않는다.
이것을 세션(Session)을 통해서 실행(Run)시켜주어야 한다.
이런 특성 때문에 텐서플로는 lazy 하다고 한다.

결국 정리하자면, 텐서플로를 두 단계를 거쳐야 한다.

(1) 그래프를 그린다(정의한다)
(2) 그래프를 실행시킨다

※ tf.eager 를 통해서 lazy하지 않게 만들 수는 있지만 텐서플로에서 잘 사용되지는 않는다.

그러면 왜 이렇게 Lazy하게 만들었을까?
이런 구조를 통해서 Python에서 C++로의 전환이 최소화되고 계산이 효율적으로 수행될 수 있기 때문이다.

'구글 머신러닝 스터디잼(중급) > Introduction to TensorFlow' 카테고리의 다른 글

TensorFlow 실습 1  (0) 2019.10.28
Tensor and Variable  (0) 2019.10.25
Graph and Session  (0) 2019.10.25
What is TensorFlow?  (0) 2019.10.25
Introduction  (0) 2019.10.25

+ Recent posts