본문 바로가기
코딩/데이터 분석 이론 & 응용

[18] Deep Learning - Tensorflow

반응형

[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" 

 

 

 

 

반응형