[18] Deep Learning - Tensorflow
Tensorflow
TensorFlow , 텐서플로우는 많은 계산을 빠르게 처리할 수 있는 파이썬 라이브러리다. 딥러닝이나 머신러닝의 과정 속에서 대규모 계산이 필요하다는 것을 생각해보면 , 텐서플로우가 딥러닝과 머신러닝에 왜 사용되는지 그 이유를 알 수 있다. 대규모 고속 계산이 가능한 텐서플로우를 통해 우리는 다양한 머신러닝 , 딥러닝 작업들을 수행할 수 있다.
텐서플로우의 특징은 다음과 같다.
- 분산 컴퓨팅 / GPU 지원
- JIT (just-in-time) 컴파일러를 포함
- 플랫폼과 환경에 구애받지 않고 모델을 실행할 수 있다.
- 자동 미분 , RMSProp , Nadam 같은 Optimizer 등 딥러닝 / 머신러닝과 관련한 다양한 편의를 제공
텐서플로우의 API는 다음과 같다.
고수준 딥러닝
- tf.keras
- tf.estimator
저수준 딥러닝
- tf.nn
- tf.initializers
- tf.losses
- tf.metrics
- tf.train
- tf.optimizers
배포 및 최적화
- tf.distribute
- tf.saved_model
- tf.autograph
- tf.graph_util
- tf.lite
- tf.quantization
- tf.tpu
- tf.xla
자동 미분
- tf.GradientTape
- tf.gradients()
특수한 데이터 구조
- tf.strings
- tf.sparse
- tf.sets
- tf.nest
- tf.ragged
- tf.lookup
입출력 및 전처리
- tf.data
- tf.feature_column
- tf.audio
- tf.image
- tf.io
- tf.queue
선형대수 / 수학 처리 / 수학 연산
- tf.math
- tf.linalg
- tf.signal
- tf.random
- tf.bitwise
텐서보드 시각화
- tf.summary
그 외의 것들
- tf.compat
- tf.config
- etc
텐서플로우 저수준 API
저수준 텐서플로우 연산의 경우 C++ 코드로 구현되어있다. 텐서플로우의 많은 연산은 커널이라는 구현을 가진다. 이 각각의 커널들은 CPU나 GPU 같은 장치에 따라 맞게 만들어졌다. GPU는 병렬적인 계산이 가능하므로 , 계산 속도를 향상 시킬 수 있다. 대부분 모델을 구현할 때는 고수준의 API를 주로 사용하지만 , 세밀하거나 정교한 계산이 필요한 경우 저수준 API를 사용한다.
텐서플로우 호환성
텐서플로우는 다양한 환경에서 실행 가능하다. 윈도우 , 리눅스 , 맥 , ios , 안드로이드 등등 텐서플로우는 이처럼 다양한 환경에서 실행될 수 있다. 또한 파이썬이 아닌 C++이나 자바 , GO , 스위프트 등을 통해서도 API를 사용할 수 있다.
텐서플로우는 이처럼 환경에 구애받지 않기 떄문에 큰 생태계를 가지고 있다. 시각화를 위한 텐서보드 , 텐서플로 제품화를 위해 구글이 만든 TFX , 사전훈련된 네트워크를 공유하는 텐서플로우 허브 , 여기에 텐서플로우를 사용해 개발된 많은 모델과 그러한 모델들을 찾아볼 수 있는 깃허브까지 존재한다. 이처럼 텐서플로우는 크고 깊은 생태계를 가지고 있다.
관련 코드 및 정리
ref. "Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 2nd Edition"
'코딩 > 데이터 분석 이론 & 응용' 카테고리의 다른 글
[19] Deep Learning - How to use Tensorflow (0) | 2022.02.08 |
---|---|
[17] Deep Learning - Regularization (0) | 2022.01.27 |
[16] Deep Learning - Learning Rate Scheduling (0) | 2022.01.25 |
[15] Deep Learning - Optimizer (0) | 2022.01.24 |
[14] Deep Learning - Transfer Learning & Pre-training (0) | 2022.01.23 |