SlideShare a Scribd company logo
1 of 47
TensorFlow
맛보기
0. 목차
1. TensorFlow란 ?
1.1 Tensorflow 정의
1.2 Tensorflow 특징
1.3 왜 이름이 Tensorflow 일까?
1.4 기본용어
2. TensorFlow 기본
2.1 Tensorflow 설치
2.2 상수 자료형
2.3 그래프
2.4 플레이스홀더
2.5 변수
3. TensorFlow 실습
3.1 regression
3.2 cost function
1. Tensorflow란?
1.1 Tensorflow 정의
1.2 Tensorflow 특징
1.3 왜 이름이 Tensorflow 일까?
1.4 기본용어
1. Tensorflow란?
“TensorFlow is an open source software library
for numerical computation using data flow graphs”
TensorFlow는 data flow graphs를 사용하여 수치 계산을 위한 오픈 소
스 소프트웨어 라이브러리이다.
(일부 데이터 분석 프로그램을 작성할 때에도 자바로 구동할 때 느려서 C나 C++로 동일한
부분을 짜서, 서비스로 구현하는 경우도 종종 있는데 심지어 자바보다도 느린 파이썬으로 딥
러닝을 구동하는 것 자체가 에바참치다.)
1. Tensorflow란?
1.1 Tensorflow 정의
텐서플로우는 구글(Google)에서 만든, 딥러닝 오픈소스 패키지이다.
실제 파이썬 개발자들도 텐서플로우를 이해하기 상당히 힘들다.
텐서플로우는 정확하게 말하자면 파이썬에서 돌아가는 것이 아니라 파이썬으로 텐
서플로우를 구동한다고 이해하면 된다.
애시당초 파이썬은 자바보다도 느린 언어라서 파이썬의 함수를 이용해서 딥러닝같
은 엄청난 자원을 쓰는 알고리즘을 돌리는 것은 바보같은 짓이다.
1. Tensorflow란?
1. Tensorflow란?
1.2 Tensorflow 특징
• 그래프의 노드(Node)는 수치 연산을 나타내고 엣지(edge)는 노드 사이를 이동
하는 다차원 데이터 배열(텐서) + 배열의 이동(플로우)
• 데이터 플로우 그래프를 통한 풍부한 표현력
• 코드 수정 없이 CPU/GPU 모드로 동작
• 아이디어 테스트에서 서비스 단계까지 이용 가능
• 계산 구조와 목표 함수만 정의하면 자동으로 미분 계산을 처리
• Python/C++를 지원하며, SWIG를 통해 다양한 언어 지원 가능
1.3 왜 이름이 Tensorflow 일까?
텐서플로우라는 뜻은 직역하면 텐서의 흐름(Tensor - flow),
즉 데이터의 흐름(Data-flow)과 동일하다. 즉 텐서플로우는 데이터의 흐름을 위해
서 만들어진 라이브러리라고 생각하면 된다.
우리 뇌에는 수많은 뉴런들이 있고 데이터를 이 뉴런들을 통해서 전달하게 되는데
이 뉴런들을 그래프라고 인식하면 되고 뉴런들안에 있는 데이터가 텐서라고 생각
하면 된다.
1. Tensorflow란?
용어 설명
오퍼레이션(Operation) 그래프 상의 노드는 오퍼레이션(줄임말 op)으로 불립니다.
오퍼레이션은 하나 이상의 텐서를 받을 수 있습니다. 오퍼레이션은 계산
을 수행하고, 결과를 하나 이상의 텐서로 반환할 수 있습니다.
텐서(Tensor) 내부적으로 모든 데이터는 텐서를 통해 표현됩니다. 텐서는 일종의 다차
원 배열인데, 그래프 내의 오퍼레이션 간에는 텐서만이 전달됩니다
세션(Session) 그래프를 실행하기 위해서는 세션 객체가 필요합니다. 세션은 오퍼레이
션의 실행 환경을 캡슐화한 것입니다.
변수(Variables) 변수는 그래프의 실행시, 패러미터를 저장하고 갱신하는데 사용됩니다.
메모리 상에서 텐서를 저장하는 버퍼 역할을 합니다.
1.4 기본 용어
Tensor : “학습 데이터가 저장되는 다차원 배열 ”
1. Tensorflow란?
■ tensor의 Rank, Shape, Type
1. Tensorflow란?
■ tensor의 Rank, Shape, Type
1. Tensorflow란?
텐서플로우는 Stream Programming의 일종이
다. Flow graph 형태로 구조화하고, 각 노드는
엣지를 따라 데이터를 받게되고 처리하여 출력
한다.
우리 유저들은 이런 flow graph를 모르더라도
TensorBoard라는 자동으로 그려주는 모듈 덕
분에 편히 사용할 수 있다.
1. Tensorflow란?
2. Tensorflow 기본
2.1 Tensorflow 설치
2.2 상수 자료형
2.3 그래프
2.4 플레이스홀더
2.5 변수
2. TensorFlow 기본
print(변수) 명을 적었지만 예상했던 "1"이라는 값이 출력되지 않고 a라는 변수의
상태가 적혀 있다. a라는 변수는 string이라는 자료형으로 담겨져 있고, 상수를 담고
있다는 의미이다.
2.1 Tensorflow 설치
텐서플로우는 뉴럴네트워크에 최적화되어 있는 개발 프레임웍이기 때문에, 그 자
료형과, 실행 방식이 약간 일반적인 프로그래밍 방식과 상의하다.
상수형은 말 그대로 상수를 저장하는 데이타 형이다.
tf.constant(value, dtype=None, shape=None, name='Const',
verify_shape=False)
와 같은 형태로 정의 된다.
각 정의되는 내용은 아래와 같다.
속성 설명
value 상수의 값이다.
dtype 상수의 데이타형이다. tf.float32와 같이 실수,정수등의 데이타 타입을 정
의한다.
shape 행렬의 차원을 정의한다. shape=[3,3]으로 정의해주면, 이 상수는 3x3 행
렬을 저장하게 된다.
name name은 이 상수의 이름을 정의한다.
2.2 상수 자료형
2. TensorFlow 기본
예제 (1)
import tensorflow as tf
a = tf.constant([5],dtype=tf.float32)
b = tf.constant([10],dtype=tf.float32)
c = tf.constant([2],dtype=tf.float32)
d = a*b+c
print(d)
2. TensorFlow 기본
그런데, 막상 실행해보면, a*b+c의 값이 아니라 다음과 같이 Tensor… 라는 문자
열이 출력된다.
Tensor("add_3:0", shape=(1,), dtype=float32)
2. TensorFlow 기본
그래프와 세션이라는 개념을 이해해야 텐서플로우의 프로그래밍 모델을 이해할 수
있다.
텐서플로우는 기본적으로 그래프라는 것을 기반으로 작동을 하게 된다.
일반 사람들은 그래프라고 하면 수치를 바 형태로 표현하는 것을 이해할 수 있지만
여기서 말하는 그래프는 쉽게 생각해서 신경망 모양을 이해하면 될 것이다.
2. TensorFlow 기본
2.3 그래프
예제 (2)
import tensorflow as tf
a = tf.constant([5],dtype=tf.float32)
b = tf.constant([10],dtype=tf.float32)
c = tf.constant([2],dtype=tf.float32)
d = a*b+c
sess = tf.Session()
result = sess.run(d)
print(result)
2. TensorFlow 기본
위의 d=a*b+c 에서 d 역시 계산을 수행하는 것이 아니라 위와 같이 a*b+c 그래
프를 정의하는 것이다.
실제로 값을 뽑아내려면, 이 정의된 그래프에 a,b,c 값을 넣어서 실행해야 하는데,
세션 (Session)을 생성하여, 그래프를 실행해야 한다. 세션은 그래프를 인자로
받아서 실행을 해주는 일종의 러너(Runner)라고 생각하면 된다.
2. TensorFlow 기본
텐서플로우 프로그램을 시각화 한 것이 위의 모양이라고 생각하면 된다.
우선 X와 Y의 값을 생성하고, 이 텐서들을 add라는 명령어로 값을 합친 후,
sess.run이라는 텐서의 실행으로 값을 실행하면 15라는 값이 나오게 된다.
기존의 프로그램과 차이점이 이해가 안될 수 있지만, sess.run이라는 것을 수행하기
전에는 위의 내용은 실행이 되지 않는다. 즉, 미리 세팅해놓고 sess.run을 통해서 실
제 프로그램을 작동하는 것이 텐서플로우 방식이다.
2. TensorFlow 기본
추가가 된 것은 session 이라는 것을 실행한다는
것과, 마지막에는 세션을 종료한 부분을 넣었다.
텐서플로우는 이렇게 내용의 와꾸(?)를 짜놓고, 마
지막에 스위치 버튼을 눌러서 실행을 하는 구조이
고 이것을 지연실행이라고 한다.
2. TensorFlow 기본
텐서플로우(tensorflow)에는 플레이스홀더(Placeholder)라는 기능이 있습니다.
텐서플로우는 그래프라는 것을 미리 만들어 놓고, 필요한 시점에 해당 그래프를 실
행하는 지연실행(lazy evaluation)이라는 방식을 사용합니다.
이런 내용에 걸맞게 플레이스홀더는 변수의 타입을 미리 설정해놓고 필요한 변수
를 나중에 받아서 실행하는 것을 의미합니다.
텐서플로우는 신경망을 구현하기 때문에 신경망과 가장 어울리는 변수 설정이 바
로 플레이스 홀더 입니다.
2. TensorFlow 기본
2.4 플레이스홀더
우리가 신경망을 구현하기 위해서는 우선 Input 노드와 Output 노드를 설계합니다.
Input 노드는 Feature들이겠고, Output 노드는 연산이 되어서 최종적으로 나온 결과
값이겠지요. 그리고 중간에 Hidden 노드를 생성하고 튜닝해서 Output 노드를 최적화
합니다
즉 데이터셋과 모델셋을 분리를 하게 되어서, 필요한 데이터셋을 모델에 대입을 하게
되면 신경망을 구축하기 상당히 수월해 집니다. 이 개념을 한번 코딩으로 구현해보도
록 하겠습니다.
2. TensorFlow 기본
y = x * 2 를 그래프를 통해서 실행한다고 하자. 입력값으로는 1,2,3,4,5를 넣고, 출
력은 2,4,6,8,10을 기대한다고 하자. 이렇게 여러 입력값을 그래프에서 넣는 경우
는 머신러닝에서 y=W*x + b 와 같은 그래프가 있다고 할 때, x는 학습을 위한 데
이타가 된다.
즉 지금 살펴보고자 하는 데이타 타입은 학습을 위한 학습용 데이타를 위한 데이타
타입이다.
y=x*2를 정의하면 내부적으로 다음과 같은 그래프가 된다.
이렇게 학습용 데이타를 담는 그릇을 플레이스홀더(placeholder)라고 한다.
2. TensorFlow 기본
플레이스 홀더는 그래프에서 x 즉 입력값을 저장하는 일종의 통(버킷)이다.
tf.placeholder(dtype,shape,name)
으로 정의된다.
속성 설명
dtype 플레이스홀더에 저장되는 데이타형이다. tf.float32와 같이 실수,정수등의
데이타 타입을 정의한다
shape 행렬의 차원을 정의한다. shapre=[3,3]으로 정의해주면, 이 플레이스홀
더는 3x3 행렬을 저장하게 된다.
name name은 이 플레이스 홀더의 이름을 정의한다.
그러면 이 x에 학습용 데이타를 어떻게 넣을 것인가? 이를 피딩(feeding)이라고
한다.
2. TensorFlow 기본
예제 (3)
import tensorflow as tf
input_data = [1,2,3,4,5]
x = tf.placeholder(dtype=tf.float32)
y = x * 2
sess = tf.Session()
result = sess.run(y,feed_dict={x:input_data})
print result
2. TensorFlow 기본
2. TensorFlow 기본
예제 (3)
import tensorflow as tf
input_data = [1,2,3,4,5]
x = tf.placeholder(dtype=tf.float32)
y = x * 2 # 그래프생성
sess = tf.Session()
result = sess.run(y,feed_dict={x:input_data})
print result
1, 2, 3, 4, 5
Input_data
2. TensorFlow 기본
예제 (3)
import tensorflow as tf
input_data = [1,2,3,4,5]
x = tf.placeholder(dtype=tf.float32)
y = x * 2 # 그래프생성
sess = tf.Session()
result = sess.run(y,feed_dict={x:input_data})
print result
1, 2, 3, 4, 5
Input_data
x
dtype=tf.float32
플레이스 홀더
2. TensorFlow 기본
예제 (3)
import tensorflow as tf
input_data = [1,2,3,4,5]
x = tf.placeholder(dtype=tf.float32)
y = x * 2 # 그래프생성
sess = tf.Session()
result = sess.run(y,feed_dict={x:input_data})
print result
Y = x*2
x *
2
1, 2, 3, 4, 5
Input_data
x
dtype=tf.float32
그래프
플레이스 홀더
2. TensorFlow 기본
예제 (3)
import tensorflow as tf
input_data = [1,2,3,4,5]
x = tf.placeholder(dtype=tf.float32)
y = x * 2 # 그래프생성
sess = tf.Session()
result = sess.run(y,feed_dict={x:input_data})
print result
Y = x*2
x *
2
1, 2, 3, 4, 5
Input_data
x
dtype=tf.float32
피딩
[ 2. 4. 6. 8. 10.]
그래프
플레이스 홀더
2. TensorFlow 기본
y=W*x+b 라는 학습용 가설이 있을때, x가 입력데이타 였다면, W와 b는 학습을
통해서 구해야 하는 값이 된다. 이를 변수(Variable)이라고 하는데, 변수형은
Variable 형의 객체로 생성이 된다.
예제 (4)
import tensorflow as tf
input_data = [1,2,3,4,5]
x = tf.placeholder(dtype=tf.float32)
W = tf.Variable(2,dtype=tf.float32)
y = W*x
sess = tf.Session()
result = sess.run(y,feed_dict={x:input_data})
print(result)
2. TensorFlow 기본
2.5 변수
예제 (4)
import tensorflow as tf
input_data = [1,2,3,4,5]
x = tf.placeholder(dtype=tf.float32)
W = tf.Variable(2,dtype=tf.float32)
y = W*x
sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)
result = sess.run(y,feed_dict={x:input_data})
print(result)
텐서플로우에서 변수형은 그래프를 실행하기 전에 초기화를 해줘야 그 값이 변수에
지정이 된다.
2. TensorFlow 기본
텐서플로우를 처음 시작할때, “데이타를 가지고 학습을 시켜서 적정한 값을 찾는
다" 라는 머신러닝 학습 모델의 특성상, 모델을 그래프로 정의하고, 세션을 만들
어서 그래프를 실행하고, 세션이 실행될때 그래프에 동적으로 값을 넣어가면서
(피딩) 실행한 다는 기본 개념을 잘 이해해야 텐서플로우 프로그래밍을 제대로 시
작할 수 있다.
2. TensorFlow 기본
3. Tensorflow 실습
3. TensorFlow 실습
3.1 regression
직역하면 회귀. 그래프상에 무작위하게 흩어져 있는 데이터의 경향을 찾아
선으로 나타내는 것.
선이 직선형태일 경우 linear regression이라고 하며 여기서는 prediction의
한 방법을 뜻함.
위와 같은 표가 주어졌을 때, x가 4이면 y값은 몇일까?
-> 인간은 직관적으로 4라고 추정가능
-> 사실은 머릿속에서 y=x라는 선을 만들어 낸 것
이러한 직관을 컴퓨터에 주입해 기계적인 방식으로 regression이 가능하
게끔 할 수 없을까
3. TensorFlow 실습
주어진 데이터를 표현하는 여러 가설(Hypothesis)이 존재함(각 직선)
직선이므로 H(x)=Wx+b 로 표현가능
W는 weight, b는 bias를 뜻함
여러 가설 중에 가장 잘 들어맞는 것을 찾자
3. TensorFlow 실습
'가장 잘 들어맞는'의 정의는?
각 데이터와 가설간의 y값 차이를 구해서 평균을 내자
즉, H(x)-y가 y차이에 해당함
하지만 이는 +도 되고 -도 되므로 이를 보완하기 위해 제곱을 때림
제곱을 때림으로서 부호문제도 해결하고 더 큰 차이를 boosting하는 효과도 있음
Q1)
그냥 절댓값을 씌우면 안되나요? -> 절대값을 씌우면 함수가 연속적이지 않음 -> 미분을 할
수 없다
Q2)
-> 왜 미분을 할 수 있어야 하나요? -> 밑에 나온다
3. TensorFlow 실습
따라서 수식은 위와 같으며 이를 cost function 또는 loss function이라고도 함.
cost가 0이라는 뜻은 가설과 데이터가 정확하게 일치한다는 뜻.
cost 함수에 들어가는 인자는 W와 b
이를 미세하게 조정해가며 0에 가까워지는 점을 찾아야 함
3. TensorFlow 실습
3.2 cost function
** 0에 가까워 지는 점을 어떻게 찾는가?
일단 b는 없고 H(x)=Wx 라고 가정
cost함수를 'W'에 대해 미분한 값 -> 기울기에 해당
원래 W에서 기울기를 빼줌
W에 따른 cost가 왼쪽 그림과 같이 나타날 때
W를 -1로 설정한 경우
-> cost=20 이 되고 오른쪽으로 나아가야 함
W가 -1일 때의 기울기는 음수가 나옴
아까 W에서 기울기를 빼준다고 했는데
기울기가 음수이므로 W에서 기울기를 빼면 결국 '오른
쪽으로 가는 셈'
한편 W가 1이라고 가정하면 양수의 기울기가 나옴
W에서 기울기를 빼주면 결국 '왼쪽으로 가는 셈'
또한 W에 따라 cost가 변하므로 'W'에 대해 미분해야
함은 자명
3. TensorFlow 실습
일반적으로 cost함수에 1/2을 곱해줘서, 미분
했을 때 값이 깔끔하게 정리되게 함
어차피 상수를 곱해주는 건 별 의미없음
위에서 마지막 식이 GD 식에 해당함.
:= 는 대입한다는 뜻
저기서 α는 얼마만큼의 강도로 이동할 지를 결정
짓는
계수에 해당
learning rate라 함
α가 너무 크면 지나치게 많이 이동하므로 W가 0
에 수렴하지 않고 발산하게 됨
보통 0.1을 기본으로 잡고 점점 줄여나감
3. TensorFlow 실습
y가 단일 x에 대한 1차식으로 나타나는 경우 linear regression이 먹힌다.
예를 들면 pc방 사용시간(x)에 따른 pc방 요금(y)
그러나 현실의 데이터 상관관계는 이렇게 단순하지만은 않다.
x1, x2, x3,.. 가 모여서 y가 결정되는 경우 (Multiple linear regression)
또는 x와 y의 관계가 n차 식으로 나타나는 경우(Nonlinear regression)
이외에도 regression의 종류는 많다.
따라서 linear regression은 그냥 방법중에 하나일뿐이며 모든 데이터 모델에
적용가능한 것은 아니다.
3. TensorFlow 실습
3. TensorFlow 실습
3. TensorFlow 실습
3. TensorFlow 실습

More Related Content

What's hot

Matplotlib 기초 이해하기_20160730
Matplotlib 기초 이해하기_20160730Matplotlib 기초 이해하기_20160730
Matplotlib 기초 이해하기_20160730Yong Joon Moon
 
Python 이해하기 20160815
Python 이해하기 20160815Python 이해하기 20160815
Python 이해하기 20160815Yong Joon Moon
 
Python Sympy 모듈 이해하기
Python Sympy 모듈 이해하기Python Sympy 모듈 이해하기
Python Sympy 모듈 이해하기Yong Joon Moon
 
Python+numpy pandas 3편
Python+numpy pandas 3편Python+numpy pandas 3편
Python+numpy pandas 3편Yong Joon Moon
 
파이썬 문자열 이해하기
파이썬 문자열 이해하기파이썬 문자열 이해하기
파이썬 문자열 이해하기Yong Joon Moon
 
Processing 기초 이해하기_20160713
Processing 기초 이해하기_20160713Processing 기초 이해하기_20160713
Processing 기초 이해하기_20160713Yong Joon Moon
 
Python+numpy pandas 2편
Python+numpy pandas 2편Python+numpy pandas 2편
Python+numpy pandas 2편Yong Joon Moon
 
2017 tensor flow dev summit
2017 tensor flow dev summit2017 tensor flow dev summit
2017 tensor flow dev summitTae Young Lee
 
파이썬 문자열 이해하기
파이썬 문자열 이해하기파이썬 문자열 이해하기
파이썬 문자열 이해하기Yong Joon Moon
 
Python+numpy pandas 1편
Python+numpy pandas 1편Python+numpy pandas 1편
Python+numpy pandas 1편Yong Joon Moon
 
파이썬 크롤링 모듈
파이썬 크롤링 모듈파이썬 크롤링 모듈
파이썬 크롤링 모듈Yong Joon Moon
 
파이썬 Collections 모듈 이해하기
파이썬 Collections 모듈 이해하기파이썬 Collections 모듈 이해하기
파이썬 Collections 모듈 이해하기Yong Joon Moon
 
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 3장. 분류
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 3장. 분류[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 3장. 분류
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 3장. 분류Haesun Park
 
R 기본-데이타형 소개
R 기본-데이타형 소개R 기본-데이타형 소개
R 기본-데이타형 소개Terry Cho
 
파이썬정리 20160130
파이썬정리 20160130파이썬정리 20160130
파이썬정리 20160130Yong Joon Moon
 
파이썬+Operator+이해하기 20160409
파이썬+Operator+이해하기 20160409파이썬+Operator+이해하기 20160409
파이썬+Operator+이해하기 20160409Yong Joon Moon
 
Reflect package 사용하기
Reflect package 사용하기Reflect package 사용하기
Reflect package 사용하기Yong Joon Moon
 
자료구조1보고서
자료구조1보고서자료구조1보고서
자료구조1보고서KimChangHoen
 
2012 Ds B1 01
2012 Ds B1 012012 Ds B1 01
2012 Ds B1 01seonhyung
 

What's hot (20)

Matplotlib 기초 이해하기_20160730
Matplotlib 기초 이해하기_20160730Matplotlib 기초 이해하기_20160730
Matplotlib 기초 이해하기_20160730
 
Python 이해하기 20160815
Python 이해하기 20160815Python 이해하기 20160815
Python 이해하기 20160815
 
Python Sympy 모듈 이해하기
Python Sympy 모듈 이해하기Python Sympy 모듈 이해하기
Python Sympy 모듈 이해하기
 
Python+numpy pandas 3편
Python+numpy pandas 3편Python+numpy pandas 3편
Python+numpy pandas 3편
 
파이썬 문자열 이해하기
파이썬 문자열 이해하기파이썬 문자열 이해하기
파이썬 문자열 이해하기
 
Processing 기초 이해하기_20160713
Processing 기초 이해하기_20160713Processing 기초 이해하기_20160713
Processing 기초 이해하기_20160713
 
Python+numpy pandas 2편
Python+numpy pandas 2편Python+numpy pandas 2편
Python+numpy pandas 2편
 
2017 tensor flow dev summit
2017 tensor flow dev summit2017 tensor flow dev summit
2017 tensor flow dev summit
 
파이썬 문자열 이해하기
파이썬 문자열 이해하기파이썬 문자열 이해하기
파이썬 문자열 이해하기
 
Python+numpy pandas 1편
Python+numpy pandas 1편Python+numpy pandas 1편
Python+numpy pandas 1편
 
파이썬 크롤링 모듈
파이썬 크롤링 모듈파이썬 크롤링 모듈
파이썬 크롤링 모듈
 
파이썬 Collections 모듈 이해하기
파이썬 Collections 모듈 이해하기파이썬 Collections 모듈 이해하기
파이썬 Collections 모듈 이해하기
 
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 3장. 분류
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 3장. 분류[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 3장. 분류
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 3장. 분류
 
R 기본-데이타형 소개
R 기본-데이타형 소개R 기본-데이타형 소개
R 기본-데이타형 소개
 
파이썬정리 20160130
파이썬정리 20160130파이썬정리 20160130
파이썬정리 20160130
 
강의자료3
강의자료3강의자료3
강의자료3
 
파이썬+Operator+이해하기 20160409
파이썬+Operator+이해하기 20160409파이썬+Operator+이해하기 20160409
파이썬+Operator+이해하기 20160409
 
Reflect package 사용하기
Reflect package 사용하기Reflect package 사용하기
Reflect package 사용하기
 
자료구조1보고서
자료구조1보고서자료구조1보고서
자료구조1보고서
 
2012 Ds B1 01
2012 Ds B1 012012 Ds B1 01
2012 Ds B1 01
 

Similar to Tensorflow

딥러닝을 위한 Tensor flow(skt academy)
딥러닝을 위한 Tensor flow(skt academy)딥러닝을 위한 Tensor flow(skt academy)
딥러닝을 위한 Tensor flow(skt academy)Tae Young Lee
 
R 기초 : R Basics
R 기초 : R BasicsR 기초 : R Basics
R 기초 : R BasicsYoonwhan Lee
 
Ch.5 Deep Learning
Ch.5 Deep LearningCh.5 Deep Learning
Ch.5 Deep LearningPartPrime
 
스칼라와 스파크 영혼의 듀오
스칼라와 스파크 영혼의 듀오스칼라와 스파크 영혼의 듀오
스칼라와 스파크 영혼의 듀오Taeoh Kim
 
2012 Ds B2 02 Pdf
2012 Ds B2 02 Pdf2012 Ds B2 02 Pdf
2012 Ds B2 02 Pdfkd19h
 
2012 Ds B2 02
2012 Ds B2 022012 Ds B2 02
2012 Ds B2 02chl132435
 
자료구조 Project2
자료구조 Project2자료구조 Project2
자료구조 Project2KoChungWook
 
1.자료구조와 알고리즘(강의자료)
1.자료구조와 알고리즘(강의자료)1.자료구조와 알고리즘(강의자료)
1.자료구조와 알고리즘(강의자료)fmbvbfhs
 
Erlang을 이용한 swap 서버
Erlang을 이용한 swap 서버Erlang을 이용한 swap 서버
Erlang을 이용한 swap 서버Jaejin Yun
 
1.Introduction to Python and TensorFlow
1.Introduction to Python and TensorFlow1.Introduction to Python and TensorFlow
1.Introduction to Python and TensorFlowHaesun Park
 
고등학생 R&E Python summary for test
고등학생 R&E Python summary for test고등학생 R&E Python summary for test
고등학생 R&E Python summary for testKyunghoon Kim
 
파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304Yong Joon Moon
 
자료구조2보고서
자료구조2보고서자료구조2보고서
자료구조2보고서KimChangHoen
 
MNIST for ML beginners
MNIST for ML beginnersMNIST for ML beginners
MNIST for ML beginners홍배 김
 
알고리즘과 자료구조
알고리즘과 자료구조알고리즘과 자료구조
알고리즘과 자료구조영기 김
 
Project#2말의여행 Hwp
Project#2말의여행 HwpProject#2말의여행 Hwp
Project#2말의여행 HwpKimjeongmoo
 

Similar to Tensorflow (20)

Lec 00, 01
Lec 00, 01Lec 00, 01
Lec 00, 01
 
딥러닝을 위한 Tensor flow(skt academy)
딥러닝을 위한 Tensor flow(skt academy)딥러닝을 위한 Tensor flow(skt academy)
딥러닝을 위한 Tensor flow(skt academy)
 
자구2번
자구2번자구2번
자구2번
 
R 기초 : R Basics
R 기초 : R BasicsR 기초 : R Basics
R 기초 : R Basics
 
Ch.5 Deep Learning
Ch.5 Deep LearningCh.5 Deep Learning
Ch.5 Deep Learning
 
스칼라와 스파크 영혼의 듀오
스칼라와 스파크 영혼의 듀오스칼라와 스파크 영혼의 듀오
스칼라와 스파크 영혼의 듀오
 
2012 Ds B2 02 Pdf
2012 Ds B2 02 Pdf2012 Ds B2 02 Pdf
2012 Ds B2 02 Pdf
 
2012 Ds B2 02
2012 Ds B2 022012 Ds B2 02
2012 Ds B2 02
 
자료구조 Project2
자료구조 Project2자료구조 Project2
자료구조 Project2
 
1.자료구조와 알고리즘(강의자료)
1.자료구조와 알고리즘(강의자료)1.자료구조와 알고리즘(강의자료)
1.자료구조와 알고리즘(강의자료)
 
R.T.Bach
R.T.BachR.T.Bach
R.T.Bach
 
Erlang을 이용한 swap 서버
Erlang을 이용한 swap 서버Erlang을 이용한 swap 서버
Erlang을 이용한 swap 서버
 
1.Introduction to Python and TensorFlow
1.Introduction to Python and TensorFlow1.Introduction to Python and TensorFlow
1.Introduction to Python and TensorFlow
 
고등학생 R&E Python summary for test
고등학생 R&E Python summary for test고등학생 R&E Python summary for test
고등학생 R&E Python summary for test
 
파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304파이썬+주요+용어+정리 20160304
파이썬+주요+용어+정리 20160304
 
자료구조2보고서
자료구조2보고서자료구조2보고서
자료구조2보고서
 
자료구조02
자료구조02자료구조02
자료구조02
 
MNIST for ML beginners
MNIST for ML beginnersMNIST for ML beginners
MNIST for ML beginners
 
알고리즘과 자료구조
알고리즘과 자료구조알고리즘과 자료구조
알고리즘과 자료구조
 
Project#2말의여행 Hwp
Project#2말의여행 HwpProject#2말의여행 Hwp
Project#2말의여행 Hwp
 

More from chs71

Credit default risk
Credit default riskCredit default risk
Credit default riskchs71
 
Pandas
PandasPandas
Pandaschs71
 
Seoul square[mock project]
Seoul square[mock project]Seoul square[mock project]
Seoul square[mock project]chs71
 
Learning method
Learning methodLearning method
Learning methodchs71
 
Vip detection sensor
Vip detection sensorVip detection sensor
Vip detection sensorchs71
 
Share house
Share houseShare house
Share housechs71
 
Logistic regression1
Logistic regression1Logistic regression1
Logistic regression1chs71
 
Class imbalance problem1
Class imbalance problem1Class imbalance problem1
Class imbalance problem1chs71
 
Credit default risk
Credit default riskCredit default risk
Credit default riskchs71
 
Maximum likelihood estimation
Maximum likelihood estimationMaximum likelihood estimation
Maximum likelihood estimationchs71
 

More from chs71 (11)

Credit default risk
Credit default riskCredit default risk
Credit default risk
 
Pandas
PandasPandas
Pandas
 
Seoul square[mock project]
Seoul square[mock project]Seoul square[mock project]
Seoul square[mock project]
 
Learning method
Learning methodLearning method
Learning method
 
CNN
CNNCNN
CNN
 
Vip detection sensor
Vip detection sensorVip detection sensor
Vip detection sensor
 
Share house
Share houseShare house
Share house
 
Logistic regression1
Logistic regression1Logistic regression1
Logistic regression1
 
Class imbalance problem1
Class imbalance problem1Class imbalance problem1
Class imbalance problem1
 
Credit default risk
Credit default riskCredit default risk
Credit default risk
 
Maximum likelihood estimation
Maximum likelihood estimationMaximum likelihood estimation
Maximum likelihood estimation
 

Tensorflow

  • 2. 0. 목차 1. TensorFlow란 ? 1.1 Tensorflow 정의 1.2 Tensorflow 특징 1.3 왜 이름이 Tensorflow 일까? 1.4 기본용어 2. TensorFlow 기본 2.1 Tensorflow 설치 2.2 상수 자료형 2.3 그래프 2.4 플레이스홀더 2.5 변수 3. TensorFlow 실습 3.1 regression 3.2 cost function
  • 3. 1. Tensorflow란? 1.1 Tensorflow 정의 1.2 Tensorflow 특징 1.3 왜 이름이 Tensorflow 일까? 1.4 기본용어
  • 4. 1. Tensorflow란? “TensorFlow is an open source software library for numerical computation using data flow graphs” TensorFlow는 data flow graphs를 사용하여 수치 계산을 위한 오픈 소 스 소프트웨어 라이브러리이다.
  • 5. (일부 데이터 분석 프로그램을 작성할 때에도 자바로 구동할 때 느려서 C나 C++로 동일한 부분을 짜서, 서비스로 구현하는 경우도 종종 있는데 심지어 자바보다도 느린 파이썬으로 딥 러닝을 구동하는 것 자체가 에바참치다.) 1. Tensorflow란? 1.1 Tensorflow 정의 텐서플로우는 구글(Google)에서 만든, 딥러닝 오픈소스 패키지이다. 실제 파이썬 개발자들도 텐서플로우를 이해하기 상당히 힘들다. 텐서플로우는 정확하게 말하자면 파이썬에서 돌아가는 것이 아니라 파이썬으로 텐 서플로우를 구동한다고 이해하면 된다. 애시당초 파이썬은 자바보다도 느린 언어라서 파이썬의 함수를 이용해서 딥러닝같 은 엄청난 자원을 쓰는 알고리즘을 돌리는 것은 바보같은 짓이다.
  • 7. 1. Tensorflow란? 1.2 Tensorflow 특징 • 그래프의 노드(Node)는 수치 연산을 나타내고 엣지(edge)는 노드 사이를 이동 하는 다차원 데이터 배열(텐서) + 배열의 이동(플로우) • 데이터 플로우 그래프를 통한 풍부한 표현력 • 코드 수정 없이 CPU/GPU 모드로 동작 • 아이디어 테스트에서 서비스 단계까지 이용 가능 • 계산 구조와 목표 함수만 정의하면 자동으로 미분 계산을 처리 • Python/C++를 지원하며, SWIG를 통해 다양한 언어 지원 가능
  • 8. 1.3 왜 이름이 Tensorflow 일까? 텐서플로우라는 뜻은 직역하면 텐서의 흐름(Tensor - flow), 즉 데이터의 흐름(Data-flow)과 동일하다. 즉 텐서플로우는 데이터의 흐름을 위해 서 만들어진 라이브러리라고 생각하면 된다. 우리 뇌에는 수많은 뉴런들이 있고 데이터를 이 뉴런들을 통해서 전달하게 되는데 이 뉴런들을 그래프라고 인식하면 되고 뉴런들안에 있는 데이터가 텐서라고 생각 하면 된다. 1. Tensorflow란?
  • 9. 용어 설명 오퍼레이션(Operation) 그래프 상의 노드는 오퍼레이션(줄임말 op)으로 불립니다. 오퍼레이션은 하나 이상의 텐서를 받을 수 있습니다. 오퍼레이션은 계산 을 수행하고, 결과를 하나 이상의 텐서로 반환할 수 있습니다. 텐서(Tensor) 내부적으로 모든 데이터는 텐서를 통해 표현됩니다. 텐서는 일종의 다차 원 배열인데, 그래프 내의 오퍼레이션 간에는 텐서만이 전달됩니다 세션(Session) 그래프를 실행하기 위해서는 세션 객체가 필요합니다. 세션은 오퍼레이 션의 실행 환경을 캡슐화한 것입니다. 변수(Variables) 변수는 그래프의 실행시, 패러미터를 저장하고 갱신하는데 사용됩니다. 메모리 상에서 텐서를 저장하는 버퍼 역할을 합니다. 1.4 기본 용어 Tensor : “학습 데이터가 저장되는 다차원 배열 ” 1. Tensorflow란?
  • 10. ■ tensor의 Rank, Shape, Type 1. Tensorflow란?
  • 11. ■ tensor의 Rank, Shape, Type 1. Tensorflow란?
  • 12. 텐서플로우는 Stream Programming의 일종이 다. Flow graph 형태로 구조화하고, 각 노드는 엣지를 따라 데이터를 받게되고 처리하여 출력 한다. 우리 유저들은 이런 flow graph를 모르더라도 TensorBoard라는 자동으로 그려주는 모듈 덕 분에 편히 사용할 수 있다. 1. Tensorflow란?
  • 13. 2. Tensorflow 기본 2.1 Tensorflow 설치 2.2 상수 자료형 2.3 그래프 2.4 플레이스홀더 2.5 변수
  • 14. 2. TensorFlow 기본 print(변수) 명을 적었지만 예상했던 "1"이라는 값이 출력되지 않고 a라는 변수의 상태가 적혀 있다. a라는 변수는 string이라는 자료형으로 담겨져 있고, 상수를 담고 있다는 의미이다. 2.1 Tensorflow 설치
  • 15. 텐서플로우는 뉴럴네트워크에 최적화되어 있는 개발 프레임웍이기 때문에, 그 자 료형과, 실행 방식이 약간 일반적인 프로그래밍 방식과 상의하다. 상수형은 말 그대로 상수를 저장하는 데이타 형이다. tf.constant(value, dtype=None, shape=None, name='Const', verify_shape=False) 와 같은 형태로 정의 된다. 각 정의되는 내용은 아래와 같다. 속성 설명 value 상수의 값이다. dtype 상수의 데이타형이다. tf.float32와 같이 실수,정수등의 데이타 타입을 정 의한다. shape 행렬의 차원을 정의한다. shape=[3,3]으로 정의해주면, 이 상수는 3x3 행 렬을 저장하게 된다. name name은 이 상수의 이름을 정의한다. 2.2 상수 자료형 2. TensorFlow 기본
  • 16. 예제 (1) import tensorflow as tf a = tf.constant([5],dtype=tf.float32) b = tf.constant([10],dtype=tf.float32) c = tf.constant([2],dtype=tf.float32) d = a*b+c print(d) 2. TensorFlow 기본
  • 17. 그런데, 막상 실행해보면, a*b+c의 값이 아니라 다음과 같이 Tensor… 라는 문자 열이 출력된다. Tensor("add_3:0", shape=(1,), dtype=float32) 2. TensorFlow 기본
  • 18. 그래프와 세션이라는 개념을 이해해야 텐서플로우의 프로그래밍 모델을 이해할 수 있다. 텐서플로우는 기본적으로 그래프라는 것을 기반으로 작동을 하게 된다. 일반 사람들은 그래프라고 하면 수치를 바 형태로 표현하는 것을 이해할 수 있지만 여기서 말하는 그래프는 쉽게 생각해서 신경망 모양을 이해하면 될 것이다. 2. TensorFlow 기본 2.3 그래프
  • 19. 예제 (2) import tensorflow as tf a = tf.constant([5],dtype=tf.float32) b = tf.constant([10],dtype=tf.float32) c = tf.constant([2],dtype=tf.float32) d = a*b+c sess = tf.Session() result = sess.run(d) print(result) 2. TensorFlow 기본
  • 20. 위의 d=a*b+c 에서 d 역시 계산을 수행하는 것이 아니라 위와 같이 a*b+c 그래 프를 정의하는 것이다. 실제로 값을 뽑아내려면, 이 정의된 그래프에 a,b,c 값을 넣어서 실행해야 하는데, 세션 (Session)을 생성하여, 그래프를 실행해야 한다. 세션은 그래프를 인자로 받아서 실행을 해주는 일종의 러너(Runner)라고 생각하면 된다. 2. TensorFlow 기본
  • 21. 텐서플로우 프로그램을 시각화 한 것이 위의 모양이라고 생각하면 된다. 우선 X와 Y의 값을 생성하고, 이 텐서들을 add라는 명령어로 값을 합친 후, sess.run이라는 텐서의 실행으로 값을 실행하면 15라는 값이 나오게 된다. 기존의 프로그램과 차이점이 이해가 안될 수 있지만, sess.run이라는 것을 수행하기 전에는 위의 내용은 실행이 되지 않는다. 즉, 미리 세팅해놓고 sess.run을 통해서 실 제 프로그램을 작동하는 것이 텐서플로우 방식이다. 2. TensorFlow 기본
  • 22. 추가가 된 것은 session 이라는 것을 실행한다는 것과, 마지막에는 세션을 종료한 부분을 넣었다. 텐서플로우는 이렇게 내용의 와꾸(?)를 짜놓고, 마 지막에 스위치 버튼을 눌러서 실행을 하는 구조이 고 이것을 지연실행이라고 한다. 2. TensorFlow 기본
  • 23. 텐서플로우(tensorflow)에는 플레이스홀더(Placeholder)라는 기능이 있습니다. 텐서플로우는 그래프라는 것을 미리 만들어 놓고, 필요한 시점에 해당 그래프를 실 행하는 지연실행(lazy evaluation)이라는 방식을 사용합니다. 이런 내용에 걸맞게 플레이스홀더는 변수의 타입을 미리 설정해놓고 필요한 변수 를 나중에 받아서 실행하는 것을 의미합니다. 텐서플로우는 신경망을 구현하기 때문에 신경망과 가장 어울리는 변수 설정이 바 로 플레이스 홀더 입니다. 2. TensorFlow 기본 2.4 플레이스홀더
  • 24. 우리가 신경망을 구현하기 위해서는 우선 Input 노드와 Output 노드를 설계합니다. Input 노드는 Feature들이겠고, Output 노드는 연산이 되어서 최종적으로 나온 결과 값이겠지요. 그리고 중간에 Hidden 노드를 생성하고 튜닝해서 Output 노드를 최적화 합니다 즉 데이터셋과 모델셋을 분리를 하게 되어서, 필요한 데이터셋을 모델에 대입을 하게 되면 신경망을 구축하기 상당히 수월해 집니다. 이 개념을 한번 코딩으로 구현해보도 록 하겠습니다. 2. TensorFlow 기본
  • 25. y = x * 2 를 그래프를 통해서 실행한다고 하자. 입력값으로는 1,2,3,4,5를 넣고, 출 력은 2,4,6,8,10을 기대한다고 하자. 이렇게 여러 입력값을 그래프에서 넣는 경우 는 머신러닝에서 y=W*x + b 와 같은 그래프가 있다고 할 때, x는 학습을 위한 데 이타가 된다. 즉 지금 살펴보고자 하는 데이타 타입은 학습을 위한 학습용 데이타를 위한 데이타 타입이다. y=x*2를 정의하면 내부적으로 다음과 같은 그래프가 된다. 이렇게 학습용 데이타를 담는 그릇을 플레이스홀더(placeholder)라고 한다. 2. TensorFlow 기본
  • 26. 플레이스 홀더는 그래프에서 x 즉 입력값을 저장하는 일종의 통(버킷)이다. tf.placeholder(dtype,shape,name) 으로 정의된다. 속성 설명 dtype 플레이스홀더에 저장되는 데이타형이다. tf.float32와 같이 실수,정수등의 데이타 타입을 정의한다 shape 행렬의 차원을 정의한다. shapre=[3,3]으로 정의해주면, 이 플레이스홀 더는 3x3 행렬을 저장하게 된다. name name은 이 플레이스 홀더의 이름을 정의한다. 그러면 이 x에 학습용 데이타를 어떻게 넣을 것인가? 이를 피딩(feeding)이라고 한다. 2. TensorFlow 기본
  • 27. 예제 (3) import tensorflow as tf input_data = [1,2,3,4,5] x = tf.placeholder(dtype=tf.float32) y = x * 2 sess = tf.Session() result = sess.run(y,feed_dict={x:input_data}) print result 2. TensorFlow 기본
  • 29. 예제 (3) import tensorflow as tf input_data = [1,2,3,4,5] x = tf.placeholder(dtype=tf.float32) y = x * 2 # 그래프생성 sess = tf.Session() result = sess.run(y,feed_dict={x:input_data}) print result 1, 2, 3, 4, 5 Input_data 2. TensorFlow 기본
  • 30. 예제 (3) import tensorflow as tf input_data = [1,2,3,4,5] x = tf.placeholder(dtype=tf.float32) y = x * 2 # 그래프생성 sess = tf.Session() result = sess.run(y,feed_dict={x:input_data}) print result 1, 2, 3, 4, 5 Input_data x dtype=tf.float32 플레이스 홀더 2. TensorFlow 기본
  • 31. 예제 (3) import tensorflow as tf input_data = [1,2,3,4,5] x = tf.placeholder(dtype=tf.float32) y = x * 2 # 그래프생성 sess = tf.Session() result = sess.run(y,feed_dict={x:input_data}) print result Y = x*2 x * 2 1, 2, 3, 4, 5 Input_data x dtype=tf.float32 그래프 플레이스 홀더 2. TensorFlow 기본
  • 32. 예제 (3) import tensorflow as tf input_data = [1,2,3,4,5] x = tf.placeholder(dtype=tf.float32) y = x * 2 # 그래프생성 sess = tf.Session() result = sess.run(y,feed_dict={x:input_data}) print result Y = x*2 x * 2 1, 2, 3, 4, 5 Input_data x dtype=tf.float32 피딩 [ 2. 4. 6. 8. 10.] 그래프 플레이스 홀더 2. TensorFlow 기본
  • 33. y=W*x+b 라는 학습용 가설이 있을때, x가 입력데이타 였다면, W와 b는 학습을 통해서 구해야 하는 값이 된다. 이를 변수(Variable)이라고 하는데, 변수형은 Variable 형의 객체로 생성이 된다. 예제 (4) import tensorflow as tf input_data = [1,2,3,4,5] x = tf.placeholder(dtype=tf.float32) W = tf.Variable(2,dtype=tf.float32) y = W*x sess = tf.Session() result = sess.run(y,feed_dict={x:input_data}) print(result) 2. TensorFlow 기본 2.5 변수
  • 34. 예제 (4) import tensorflow as tf input_data = [1,2,3,4,5] x = tf.placeholder(dtype=tf.float32) W = tf.Variable(2,dtype=tf.float32) y = W*x sess = tf.Session() init = tf.global_variables_initializer() sess.run(init) result = sess.run(y,feed_dict={x:input_data}) print(result) 텐서플로우에서 변수형은 그래프를 실행하기 전에 초기화를 해줘야 그 값이 변수에 지정이 된다. 2. TensorFlow 기본
  • 35. 텐서플로우를 처음 시작할때, “데이타를 가지고 학습을 시켜서 적정한 값을 찾는 다" 라는 머신러닝 학습 모델의 특성상, 모델을 그래프로 정의하고, 세션을 만들 어서 그래프를 실행하고, 세션이 실행될때 그래프에 동적으로 값을 넣어가면서 (피딩) 실행한 다는 기본 개념을 잘 이해해야 텐서플로우 프로그래밍을 제대로 시 작할 수 있다. 2. TensorFlow 기본
  • 37. 3. TensorFlow 실습 3.1 regression 직역하면 회귀. 그래프상에 무작위하게 흩어져 있는 데이터의 경향을 찾아 선으로 나타내는 것. 선이 직선형태일 경우 linear regression이라고 하며 여기서는 prediction의 한 방법을 뜻함.
  • 38. 위와 같은 표가 주어졌을 때, x가 4이면 y값은 몇일까? -> 인간은 직관적으로 4라고 추정가능 -> 사실은 머릿속에서 y=x라는 선을 만들어 낸 것 이러한 직관을 컴퓨터에 주입해 기계적인 방식으로 regression이 가능하 게끔 할 수 없을까 3. TensorFlow 실습
  • 39. 주어진 데이터를 표현하는 여러 가설(Hypothesis)이 존재함(각 직선) 직선이므로 H(x)=Wx+b 로 표현가능 W는 weight, b는 bias를 뜻함 여러 가설 중에 가장 잘 들어맞는 것을 찾자 3. TensorFlow 실습
  • 40. '가장 잘 들어맞는'의 정의는? 각 데이터와 가설간의 y값 차이를 구해서 평균을 내자 즉, H(x)-y가 y차이에 해당함 하지만 이는 +도 되고 -도 되므로 이를 보완하기 위해 제곱을 때림 제곱을 때림으로서 부호문제도 해결하고 더 큰 차이를 boosting하는 효과도 있음 Q1) 그냥 절댓값을 씌우면 안되나요? -> 절대값을 씌우면 함수가 연속적이지 않음 -> 미분을 할 수 없다 Q2) -> 왜 미분을 할 수 있어야 하나요? -> 밑에 나온다 3. TensorFlow 실습
  • 41. 따라서 수식은 위와 같으며 이를 cost function 또는 loss function이라고도 함. cost가 0이라는 뜻은 가설과 데이터가 정확하게 일치한다는 뜻. cost 함수에 들어가는 인자는 W와 b 이를 미세하게 조정해가며 0에 가까워지는 점을 찾아야 함 3. TensorFlow 실습 3.2 cost function
  • 42. ** 0에 가까워 지는 점을 어떻게 찾는가? 일단 b는 없고 H(x)=Wx 라고 가정 cost함수를 'W'에 대해 미분한 값 -> 기울기에 해당 원래 W에서 기울기를 빼줌 W에 따른 cost가 왼쪽 그림과 같이 나타날 때 W를 -1로 설정한 경우 -> cost=20 이 되고 오른쪽으로 나아가야 함 W가 -1일 때의 기울기는 음수가 나옴 아까 W에서 기울기를 빼준다고 했는데 기울기가 음수이므로 W에서 기울기를 빼면 결국 '오른 쪽으로 가는 셈' 한편 W가 1이라고 가정하면 양수의 기울기가 나옴 W에서 기울기를 빼주면 결국 '왼쪽으로 가는 셈' 또한 W에 따라 cost가 변하므로 'W'에 대해 미분해야 함은 자명 3. TensorFlow 실습
  • 43. 일반적으로 cost함수에 1/2을 곱해줘서, 미분 했을 때 값이 깔끔하게 정리되게 함 어차피 상수를 곱해주는 건 별 의미없음 위에서 마지막 식이 GD 식에 해당함. := 는 대입한다는 뜻 저기서 α는 얼마만큼의 강도로 이동할 지를 결정 짓는 계수에 해당 learning rate라 함 α가 너무 크면 지나치게 많이 이동하므로 W가 0 에 수렴하지 않고 발산하게 됨 보통 0.1을 기본으로 잡고 점점 줄여나감 3. TensorFlow 실습
  • 44. y가 단일 x에 대한 1차식으로 나타나는 경우 linear regression이 먹힌다. 예를 들면 pc방 사용시간(x)에 따른 pc방 요금(y) 그러나 현실의 데이터 상관관계는 이렇게 단순하지만은 않다. x1, x2, x3,.. 가 모여서 y가 결정되는 경우 (Multiple linear regression) 또는 x와 y의 관계가 n차 식으로 나타나는 경우(Nonlinear regression) 이외에도 regression의 종류는 많다. 따라서 linear regression은 그냥 방법중에 하나일뿐이며 모든 데이터 모델에 적용가능한 것은 아니다. 3. TensorFlow 실습