SlideShare a Scribd company logo
1 of 33
Download to read offline
TENSORFLOW
101
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
발표자
> Leonardo YongUk Kim (dalinaum@gmail.com)
> 모바일 데이터베이스, Realm의 Java 개발자.
> GDG Korea Android의 운영자
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
다루는 것과 다루지 않는 것
> 다루는 것
> 다루지 않는 것
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
다루는 것
> 텐서플로우가 무엇인가?
> 어떻게 설치하는가?
> 간략한 사용법
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
다루지 않는 것
> 복잡한 사용법
> 머신 러닝, 인공 지능
> 알파고, 이세돌
> 구글의 전략
> 창조 경제
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
텐스플로우란 무엇인가?
> TensorFlow is an Open Source Software Library for
Machine Intelligence
> Tensor - 벡터, 매트릭스 등의 자료구조를 의미
> Flow - 일련의 처리
> TensorFlow - 여러 자료구조를 일련의 가공을 거쳐
머신 지능을 만들게 하는 라이브러리.
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
다운로드와 설치
> 이 발표는 OS X, CPU 만 다룹니다.
> export TF_BINARY_URL=https://
storage.googleapis.com/tensorflow/mac/
tensorflow-0.9.0rc0-py2-none-any.whl
> pip install --upgrade $TF_BINARY_URL
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
HELLO WORLD
# python
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
a = tf.constant(10)
b = tf.constant(32)
print(sess.run(a + b))
> 상수를 만들 수 있고 실행은 세션에서 해야 합니다.
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
HELLO WORLD (계속)
# python
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
a = tf.constant(10)
b = tf.constant(32)
print(sess.run(a + b))
> 왜 덧셈도 했나요?
> 죄송합니다.
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
> MNIST database (Mixed National Institute of Standards
and Technology database) is a large database of
handwritten digits that is commonly used for training
various image processing systems.
> 5.5 만개의 학습이미지, 1 만개의 테스트 이미지, 0.5
만개의 검증 이미지
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
MNIST 다운로드
# MNIST 데이터 다운로드
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
> 손으로 받을 필요 없어요.
> 5.5 만개의 학습이미지 (mnist.train)
> 1 만개의 테스트 이미지 (mnist.test)
> 0.5 만개의 검증 이미지 (mnist.validation)
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
> 개별이미지는 28 x 28의 크기
> 숫자들의 배열로 치환하자
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
이미지 텐서
> 평면화 시키면 28 x 28 = 784.
> 784 차원의 벡터 공간
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
> mnist.train,images는 [55000, 784] 모양의 텐서.
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
원 핫 벡터
> n번째 차원만 1이고 나머지는 모두 0인 벡터.
> 3은 [0, 0, 0, 1, 0, 0, 0, 0, 0, 0]으로 표현.
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
> 우리는 0부터 9까지 숫자로 매핑할 것이기 때문에
[55000, 10]의 mnist.train.labels을 준비.
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
소프트맥스 회귀
> 사람은 직관적으로 0에서 9까지 판독 한다.
> 반면 여기에서는 각 숫자에 대한 확률을 얻게 된다.
소프트맥스 회귀는 두 단계다.
1. 입력이 특정 클래스에 속한다는 근거를 추가한다.
2. 근거를 확률로 환산한다.
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
가중치
파란색이 긍정적인 가중치
빨간색이 부정적인 가중치
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
근거와 소프트맥스
> y = softmax(evidence)
> softmax(x) = normalize(exp(x))
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
소프트맥스
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
소프트맥스
y = softmax(Wx + b)
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
회귀 시행
> 텐서플로우를 가져오자.
import tensorflow as tf
> 어떤 숫자의 이미지도 받기 위한 플레이스 홀더.
x = tf.placeholder(tf.float32, [None, 784])
> None은 어떤 차원도 될 수 있다는 의미
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
> W와 b를 모두 0으로 초기화.
> 배운 이후로 의미 없는 수.
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
모델을 수행시키자.
y = tf.nn.softmax (tf.matmul(x, W) + b)
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
훈련
> 잘못을 알기 위해 좋은 모델이 무엇인지 필요.
> cross-entrophy을 비용함수로 사용.
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
옳은 값을 넣을 플레이스 홀더가 필요.
y_ = tf.placeholder(tf.float32, [None, 10])
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
최적화 알고리즘을 선택 (경사 하강법 선택)
cross_entropy가 최소화되도록 조금씩 값을 바꾸어
가며 값을 찾음.
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
초기화
init = tf.initialize_all_variables()
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
세션에 모델을 넣고 변수를 초기화
sess = tf.Session()
sess.run(init)
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
1000번을 훈련
for i in range(1000):
batch_xs, batch_ys = mnist.train.next_batch(100)
sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
모델 평가
correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))
tf.argmax은 가장 높은 확률의 인덱스를 가져옴.
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
정확도를 비교
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
전체 코드
https://gist.github.com/dalinaum/
64cca32623313ae56638cbedbd8e837a
조금 더 알고 싶습니다
> 텐서플로우 튜토리얼을 봅시다.
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
두가지 더: 구글의 머신러닝 API
> Vision API demo
> Speech API demo
감사합니다.
© Leonardo YongUk Kim (dalinaum@gmail.com), 2016.

More Related Content

Viewers also liked

Best Practices in Media Playback
Best Practices in Media PlaybackBest Practices in Media Playback
Best Practices in Media PlaybackGDG Korea
 
FIrebase를 이용한 호우호우 미니게임 만들기
FIrebase를 이용한 호우호우 미니게임 만들기FIrebase를 이용한 호우호우 미니게임 만들기
FIrebase를 이용한 호우호우 미니게임 만들기GDG Korea
 
Reinfocement learning
Reinfocement learningReinfocement learning
Reinfocement learningGDG Korea
 
안드로이드 데이터 바인딩
안드로이드 데이터 바인딩안드로이드 데이터 바인딩
안드로이드 데이터 바인딩GDG Korea
 
Introduce Android TV and new features from Google I/O 2016
Introduce Android TV and new features from Google I/O 2016Introduce Android TV and new features from Google I/O 2016
Introduce Android TV and new features from Google I/O 2016GDG Korea
 
[2017 KCD] 내가 블로그/커뮤니티를 하는 이유는?
[2017 KCD] 내가 블로그/커뮤니티를 하는 이유는?[2017 KCD] 내가 블로그/커뮤니티를 하는 이유는?
[2017 KCD] 내가 블로그/커뮤니티를 하는 이유는?Taehwan kwon
 
Building Extraordinary Apps with Firebase Analytics
Building Extraordinary Apps with Firebase AnalyticsBuilding Extraordinary Apps with Firebase Analytics
Building Extraordinary Apps with Firebase AnalyticsGDG Korea
 
텐서플로우 기초 이해하기
텐서플로우 기초 이해하기 텐서플로우 기초 이해하기
텐서플로우 기초 이해하기 Yong Joon Moon
 

Viewers also liked (8)

Best Practices in Media Playback
Best Practices in Media PlaybackBest Practices in Media Playback
Best Practices in Media Playback
 
FIrebase를 이용한 호우호우 미니게임 만들기
FIrebase를 이용한 호우호우 미니게임 만들기FIrebase를 이용한 호우호우 미니게임 만들기
FIrebase를 이용한 호우호우 미니게임 만들기
 
Reinfocement learning
Reinfocement learningReinfocement learning
Reinfocement learning
 
안드로이드 데이터 바인딩
안드로이드 데이터 바인딩안드로이드 데이터 바인딩
안드로이드 데이터 바인딩
 
Introduce Android TV and new features from Google I/O 2016
Introduce Android TV and new features from Google I/O 2016Introduce Android TV and new features from Google I/O 2016
Introduce Android TV and new features from Google I/O 2016
 
[2017 KCD] 내가 블로그/커뮤니티를 하는 이유는?
[2017 KCD] 내가 블로그/커뮤니티를 하는 이유는?[2017 KCD] 내가 블로그/커뮤니티를 하는 이유는?
[2017 KCD] 내가 블로그/커뮤니티를 하는 이유는?
 
Building Extraordinary Apps with Firebase Analytics
Building Extraordinary Apps with Firebase AnalyticsBuilding Extraordinary Apps with Firebase Analytics
Building Extraordinary Apps with Firebase Analytics
 
텐서플로우 기초 이해하기
텐서플로우 기초 이해하기 텐서플로우 기초 이해하기
텐서플로우 기초 이해하기
 

More from GDG Korea

GKAC 2015 Apr. - Xamarin forms, mvvm and testing
GKAC 2015 Apr. - Xamarin forms, mvvm and testingGKAC 2015 Apr. - Xamarin forms, mvvm and testing
GKAC 2015 Apr. - Xamarin forms, mvvm and testingGDG Korea
 
GKAC 2015 Apr. - RxAndroid
GKAC 2015 Apr. - RxAndroidGKAC 2015 Apr. - RxAndroid
GKAC 2015 Apr. - RxAndroidGDG Korea
 
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출GDG Korea
 
GKAC 2015 Apr. - Android Looper
GKAC 2015 Apr. - Android LooperGKAC 2015 Apr. - Android Looper
GKAC 2015 Apr. - Android LooperGDG Korea
 
GKAC 2014 Nov. - RxJava를 활용한 Functional Reactive Programming
GKAC 2014 Nov. - RxJava를 활용한 Functional Reactive ProgrammingGKAC 2014 Nov. - RxJava를 활용한 Functional Reactive Programming
GKAC 2014 Nov. - RxJava를 활용한 Functional Reactive ProgrammingGDG Korea
 
GKAC 2014 Nov. - Android Wear 개발, 할까요 말까요?
GKAC 2014 Nov. - Android Wear 개발, 할까요 말까요?GKAC 2014 Nov. - Android Wear 개발, 할까요 말까요?
GKAC 2014 Nov. - Android Wear 개발, 할까요 말까요?GDG Korea
 
GKAC 2014 Nov. - 그루비로 안드로이드 앱 개발하기
GKAC 2014 Nov. - 그루비로 안드로이드 앱 개발하기GKAC 2014 Nov. - 그루비로 안드로이드 앱 개발하기
GKAC 2014 Nov. - 그루비로 안드로이드 앱 개발하기GDG Korea
 
GKAC 2014 Nov. - The Beautiful Design Collection 살펴보기
GKAC 2014 Nov. - The Beautiful Design Collection 살펴보기GKAC 2014 Nov. - The Beautiful Design Collection 살펴보기
GKAC 2014 Nov. - The Beautiful Design Collection 살펴보기GDG Korea
 
GKAC 2014 Nov. - 안드로이드 5.0의 새로운 기능
GKAC 2014 Nov. - 안드로이드 5.0의 새로운 기능GKAC 2014 Nov. - 안드로이드 5.0의 새로운 기능
GKAC 2014 Nov. - 안드로이드 5.0의 새로운 기능GDG Korea
 

More from GDG Korea (9)

GKAC 2015 Apr. - Xamarin forms, mvvm and testing
GKAC 2015 Apr. - Xamarin forms, mvvm and testingGKAC 2015 Apr. - Xamarin forms, mvvm and testing
GKAC 2015 Apr. - Xamarin forms, mvvm and testing
 
GKAC 2015 Apr. - RxAndroid
GKAC 2015 Apr. - RxAndroidGKAC 2015 Apr. - RxAndroid
GKAC 2015 Apr. - RxAndroid
 
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출
 
GKAC 2015 Apr. - Android Looper
GKAC 2015 Apr. - Android LooperGKAC 2015 Apr. - Android Looper
GKAC 2015 Apr. - Android Looper
 
GKAC 2014 Nov. - RxJava를 활용한 Functional Reactive Programming
GKAC 2014 Nov. - RxJava를 활용한 Functional Reactive ProgrammingGKAC 2014 Nov. - RxJava를 활용한 Functional Reactive Programming
GKAC 2014 Nov. - RxJava를 활용한 Functional Reactive Programming
 
GKAC 2014 Nov. - Android Wear 개발, 할까요 말까요?
GKAC 2014 Nov. - Android Wear 개발, 할까요 말까요?GKAC 2014 Nov. - Android Wear 개발, 할까요 말까요?
GKAC 2014 Nov. - Android Wear 개발, 할까요 말까요?
 
GKAC 2014 Nov. - 그루비로 안드로이드 앱 개발하기
GKAC 2014 Nov. - 그루비로 안드로이드 앱 개발하기GKAC 2014 Nov. - 그루비로 안드로이드 앱 개발하기
GKAC 2014 Nov. - 그루비로 안드로이드 앱 개발하기
 
GKAC 2014 Nov. - The Beautiful Design Collection 살펴보기
GKAC 2014 Nov. - The Beautiful Design Collection 살펴보기GKAC 2014 Nov. - The Beautiful Design Collection 살펴보기
GKAC 2014 Nov. - The Beautiful Design Collection 살펴보기
 
GKAC 2014 Nov. - 안드로이드 5.0의 새로운 기능
GKAC 2014 Nov. - 안드로이드 5.0의 새로운 기능GKAC 2014 Nov. - 안드로이드 5.0의 새로운 기능
GKAC 2014 Nov. - 안드로이드 5.0의 새로운 기능
 

Tensorflow 101

  • 1. TENSORFLOW 101 © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 2. 발표자 > Leonardo YongUk Kim (dalinaum@gmail.com) > 모바일 데이터베이스, Realm의 Java 개발자. > GDG Korea Android의 운영자 © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 3. 다루는 것과 다루지 않는 것 > 다루는 것 > 다루지 않는 것 © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 4. 다루는 것 > 텐서플로우가 무엇인가? > 어떻게 설치하는가? > 간략한 사용법 © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 5. 다루지 않는 것 > 복잡한 사용법 > 머신 러닝, 인공 지능 > 알파고, 이세돌 > 구글의 전략 > 창조 경제 © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 6. 텐스플로우란 무엇인가? > TensorFlow is an Open Source Software Library for Machine Intelligence > Tensor - 벡터, 매트릭스 등의 자료구조를 의미 > Flow - 일련의 처리 > TensorFlow - 여러 자료구조를 일련의 가공을 거쳐 머신 지능을 만들게 하는 라이브러리. © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 7. 다운로드와 설치 > 이 발표는 OS X, CPU 만 다룹니다. > export TF_BINARY_URL=https:// storage.googleapis.com/tensorflow/mac/ tensorflow-0.9.0rc0-py2-none-any.whl > pip install --upgrade $TF_BINARY_URL © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 8. HELLO WORLD # python import tensorflow as tf hello = tf.constant('Hello, TensorFlow!') sess = tf.Session() a = tf.constant(10) b = tf.constant(32) print(sess.run(a + b)) > 상수를 만들 수 있고 실행은 세션에서 해야 합니다. © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 9. HELLO WORLD (계속) # python import tensorflow as tf hello = tf.constant('Hello, TensorFlow!') sess = tf.Session() a = tf.constant(10) b = tf.constant(32) print(sess.run(a + b)) > 왜 덧셈도 했나요? > 죄송합니다. © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 10. > MNIST database (Mixed National Institute of Standards and Technology database) is a large database of handwritten digits that is commonly used for training various image processing systems. > 5.5 만개의 학습이미지, 1 만개의 테스트 이미지, 0.5 만개의 검증 이미지 © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 11. MNIST 다운로드 # MNIST 데이터 다운로드 from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets("MNIST_data/", one_hot=True) > 손으로 받을 필요 없어요. > 5.5 만개의 학습이미지 (mnist.train) > 1 만개의 테스트 이미지 (mnist.test) > 0.5 만개의 검증 이미지 (mnist.validation) © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 12. > 개별이미지는 28 x 28의 크기 > 숫자들의 배열로 치환하자 © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 13. 이미지 텐서 > 평면화 시키면 28 x 28 = 784. > 784 차원의 벡터 공간 © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 14. > mnist.train,images는 [55000, 784] 모양의 텐서. © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 15. 원 핫 벡터 > n번째 차원만 1이고 나머지는 모두 0인 벡터. > 3은 [0, 0, 0, 1, 0, 0, 0, 0, 0, 0]으로 표현. © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 16. > 우리는 0부터 9까지 숫자로 매핑할 것이기 때문에 [55000, 10]의 mnist.train.labels을 준비. © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 17. 소프트맥스 회귀 > 사람은 직관적으로 0에서 9까지 판독 한다. > 반면 여기에서는 각 숫자에 대한 확률을 얻게 된다. 소프트맥스 회귀는 두 단계다. 1. 입력이 특정 클래스에 속한다는 근거를 추가한다. 2. 근거를 확률로 환산한다. © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 18. 가중치 파란색이 긍정적인 가중치 빨간색이 부정적인 가중치 © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 19. 근거와 소프트맥스 > y = softmax(evidence) > softmax(x) = normalize(exp(x)) © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 20. 소프트맥스 © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 21. 소프트맥스 y = softmax(Wx + b) © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 22. 회귀 시행 > 텐서플로우를 가져오자. import tensorflow as tf > 어떤 숫자의 이미지도 받기 위한 플레이스 홀더. x = tf.placeholder(tf.float32, [None, 784]) > None은 어떤 차원도 될 수 있다는 의미 © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 23. W = tf.Variable(tf.zeros([784, 10])) b = tf.Variable(tf.zeros([10])) > W와 b를 모두 0으로 초기화. > 배운 이후로 의미 없는 수. © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 24. 모델을 수행시키자. y = tf.nn.softmax (tf.matmul(x, W) + b) © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 25. 훈련 > 잘못을 알기 위해 좋은 모델이 무엇인지 필요. > cross-entrophy을 비용함수로 사용. © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 26. 옳은 값을 넣을 플레이스 홀더가 필요. y_ = tf.placeholder(tf.float32, [None, 10]) cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1])) © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 27. 최적화 알고리즘을 선택 (경사 하강법 선택) cross_entropy가 최소화되도록 조금씩 값을 바꾸어 가며 값을 찾음. train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy) © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 28. 초기화 init = tf.initialize_all_variables() © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 29. 세션에 모델을 넣고 변수를 초기화 sess = tf.Session() sess.run(init) © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 30. 1000번을 훈련 for i in range(1000): batch_xs, batch_ys = mnist.train.next_batch(100) sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys}) © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 31. 모델 평가 correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1)) tf.argmax은 가장 높은 확률의 인덱스를 가져옴. accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float")) 정확도를 비교 © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 32. 전체 코드 https://gist.github.com/dalinaum/ 64cca32623313ae56638cbedbd8e837a 조금 더 알고 싶습니다 > 텐서플로우 튜토리얼을 봅시다. © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.
  • 33. 두가지 더: 구글의 머신러닝 API > Vision API demo > Speech API demo 감사합니다. © Leonardo YongUk Kim (dalinaum@gmail.com), 2016.