텐서플로 (TensorFlow)

1. 텐서플로 (TensorFlow)의 개요

개념머신러닝 모델의 제작, 빌드 및 배포를 위해 개발 도구, 라이브러리, 커뮤니티 리소스로 구성된 엔드 투 엔드 오픈소스 플랫폼
특징직관적인 APIKeras , Python, C++ API 이외 하위 호환성 지원
이중 모드CPU , GPU 모드 별 ML 연산과 단순 작업 분할
TPU텐서플로우 전용 최적화 칩셋 활용
  • 구글이 2011년에 개발을 시작하여 2015년에 오픈 소스로 공개하였고, Python 등 개발 언어를 통해 딥러닝과 기계학습 분야를 일반인들도 사용하기 쉽도록 다양한 기능 제공

 

2. 텐서플로 아키텍처 및 구성 요소

(1) 텐서플로 아키텍처

(2) 텐서플로의 구성 요소

항목특징기능
TensorInt, String 등 동작 정의일관된 유형(dtype)의 다차원 배열
Operation임의 연산 수행그래프 상 노드, 텐서를 받거나 반환
Node입,출력 구성수치연산, 데이터 입출력, 저장
Kernel이중 모드 지원CPU, GPU 별 연산 및 작성 수행
Training매트릭스 구성코어 텐서 플로, 텐서 분석보드 구성
Model versioning모델 병렬화모델 저장 및 관리, 시퀀싱
Deployment서버, 에지 디바이스/웹 배포언어 및 플랫폼 제약없이 배포
  • 사용자의 생산성 향상 위해 지속 개선중이며, 텐서플로 2.0에서 불필요 API 제거, API 일관성 향상(Unified RNNs, Unified Optimizers), 파이썬 런타임(runtime)과 즉시 실행(eager execution) 통합

 

3. 텐서플로 2.0의 변경사항

구분변경사항세부 변경사항
API 개선
측면
API 정리– tf.app, tf.flags, tf.logging 삭제, absl-py 오픈 소스 권장
– tf.* 네임스페이스(namespace) 정리
즉시 실행– tf.control_dependencies() 불필요
– 모든 코드는 라인 순서대로 실행
동작 구조
최적화 측면
전역 메커니즘 제거– tf.Variable() 호출 시 기본 그래프에 노드(node) 추가
– 옵티마이저는 훈련 가능한 모든 변수의 그래디언트 계산
세션 대신 함수– 함수 최적화(pruning, kernel fusion 등)
– 모듈화된 텐서플로 함수를 재사용하고 공유
  • 텐서플로 2.0 권장 사항으로 작은 함수로 코드 리팩토링, 케라스 층과 모델 사용하여 변수 관리 등을 통해 최적의 머신러닝 모델 제작, 빌드 및 배포

 

[참고]

  • Tensorflow.org, “TensorFlow 가이드”

콘텐츠 사용 시 출처 표기 부탁 드리고, 댓글은 큰 힘이 됩니다^^