핸즈온 머신러닝
9장. 텐서플로 시작하기

박해선(옮긴이)

haesun.park@tensorflow.blog

https://tensorflow.blog
tensorflow.org
tensorflow.blog≠
2015.11: 0.5.0 공개
2018.11: 1.12.0 공개
설치 방법
• 리눅스 & 맥

• CPU : conda install tensorflow

• GPU : pip install tensorflow-gpu, 그리고 CUDA, cuDNN

• 윈도우즈: conda (https://tensorflow.blog/윈도우즈에-아나콘다-텐서플로우-설치하기/)

• 64비트 CPU만 지원

• Python 3.6 버전용 아나콘다 설치(https://repo.anaconda.com/archive/
Anaconda3-5.2.0-Windows-x86_64.exe)

• AVX를 지원하지 않는 CPU: tensorflow 1.5.0 (인텔 프로세스 유틸리티로 확인)
텐서플로 특징
• 윈도, 리눅스, macOS, 모바일(TensorFlow Lite), 웹(TensorFlow JS)

• TF.Learn, TF-slim, prettytensor —> Keras

• cuDNN > C++ API > Python API > Keras

• AutoDiff, TensorBoard, Eager Execution and more…
계산 그래프
NVIDIA
딥러닝 라이브러리
Global Trend
한국 미국
중국 일본
keras
tensorflow
pytorch
mxnet
cntk
tensorflow vs keras
import tensorflow as tf
..
# 네트워크 구성
..
loss = ..
optimizer = ..
training_op = optimizer.minimize(loss)
..
sess = tf.Session()
sess.run(tf.global_variables_initializer())
..
# for loop
..
sess.run(loss, feed_dict={..})
from tensorflow import keras
# import keras
..
model = keras.Sequential()
# 네트워크 구성
..
model.compile(optimizer=.., loss=.., ..)
model.fit(..)
model.evaluate(..)
model.predict(..)
첫 번째 계산 그래프
tf.Operation 객체
tf.get_default_session().run(f)
tf.get_default_session().run(f)
tf.Graph()
* tf.reset_default_graph() : 기본 그래프 초기화
노드 값의 생애주기
x와 w를 두 번씩 평가
그래프 계산 결과는 사라지지만
변수(tf.Variable) 값은 유지됩니다.
한 번에 평가
선형 회귀
tensorflow
numpy
scikit-learn
넘파이 배열
그래디언트 수동 계산
잘못된 방식: theta = theta - learning_rate * gradients
그래디언트 자동 계산
자동 미분
옵티마이저 사용
모멘텀 옵티마이저
플레이스홀더
…
SGD, 미니배치 방식 가능
모델 저장과 복원
저장
복원
tf.summary
tensorboard
tf.name_scope
…
모듈화
단순한 변수 공유
tf.variable_scope()
examples
• 정확도가 낮음

• 입력 개수 + 1 만큼 실행
수치 미분
• 임의의 함수에 대해 적용하기 어려움
기호 미분
전진 모드 자동 미분
• 이원수 사용

• 입력 개수만큼 실행
후진 모드 자동 미분
• 미분의 연쇄 법칙(chain rule) 사용

• 출력 개수 + 1 만큼 실행
감사합니다

[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 9장 텐서플로 시작하기