저도 시행착오를 많이 겪으면서 공부하고 있습니다. 수학이 잼병이라 너무 어렵네요...
딥러닝은 머신러닝의 한 종류입니다. 2012년 캐나다 토론토 대학의 제프리 힌튼 교수가 이끈 팀이 팁러닝을 사용해서 2등과 굉장한 점수 차이를 두고 1등을 해서 딥러닝이 본격적인 주목을 받게 됩니다.
아마 앤드루 응의 강의 들은 분들은 대부분 들은 내용일겁니다.
단순한 퍼셉트론의 그림을 보면 위와 같습니다. 여기서 예를 들어 보면
입력은 새로운 스마트폰을 사도 좋은가에 관련된 요인들로 사용합니다.
이번달의 수입은 충분한가?(x1)
최신 기능을 가지고 있는가?(x2)
기존의 스마트 폰에 문제가 있는가?(x3)
입력 x1, x2, x3에 대한 가중치를 W1, W2, W3라고 했을 때 부자라면 (W1=1, W2=8, W3=3)처럼 가중치를 설정할 것입니다. 아니면 정기적으로 최신 스마트폰을 구매하는 사람이라면 (W1=3, W2=6, W3=5)처럼 설정하겠죠.
코드로 보면
if (x1 * W1) + (x2 * W2) + (x3 * W3) > b:
#구매
else:
#구매하지 않음
이미 아나콘다가 설치되어 있으면 아래와 같이 텐서플로우를 설치하면 됩니다.
pip install tensorflow
설치가 끝나면 jupyter qtconsole을 사용해서 아래의 코드를 입력합니다.
import tensorflow as tf
#상수를 정의
a = tf.constant(1234)
b = tf.constant(5000)
#계산 정의
add_op = a + b
#세션 시작하기
sess = tf.Session()
res = sess.run(add_op)
print(res)
결과는 6234가 나옵니다.
간단한 계산을 하나 더 해봅니다.
# DemoTensorflor2.py
import tensorflow as tf
a = tf.constant(2)
b = tf.constant(3)
c = tf.constant(4)
calc1_op = a + b * c
calc2_op = (a + b) * c
sess = tf.Session()
res1 = sess.run(calc1_op)
print(res1)
res2 = sess.run(calc2_op)
print(res2)
텐서플로우에서 플레이스 홀더를 한번 사용해 봅니다. 플레이스홀더는 템플릿처럼 값을 넣을 공간을 만들어두는 기능입니다. 마치 SQL문장에 임시로 "?"를 두고 실제 숫자로 치환하는 것과 비슷합니다.
# DemoTensorflowPlaceholder.py
import tensorflow as tf
#플레이스홀더 정의하기
a = tf.placeholder(tf.int32, [3])
#배열의 모든 값을 2배하는 연산 정의
b = tf.constant(2)
x2_op = a * b
#세션 시작하기
sess = tf.Session()
#플레이스홀더에 값을 넣고 실행하기
r1 = sess.run(x2_op, feed_dict={ a:[1,2,3] })
print(r1)
[2 4 6]
r2 = sess.run(x2_op, feed_dict={ a:[10,20,10] })
print(r2)
[20 40 20]
텐서보드로 시각화하기
텐서플로어 보드 를 사용하면 데이터의 흐름을 시각화 할 수 있습니다.
import tensorflow as tf
#데이터 플로우 그래프 구축하기
a = tf.constant(20, name="a")
b = tf.constant(30, name="b")
mul_op = a * b
#세션 생성하기
sess = tf.Session()
#텐서보드 사용하기
tw = tf.summary.FileWriter('c:\\work\\my_graph', sess.graph)
print(sess.run(mul_op))
600
Jupyter qtconsole에서 아래와 같이 실행합니다.
커맨드 창에서 아래와 같이 실행합니다.
C:\Users\jonathan>tensorboard --logdir=c:\\work\\my_graph
웹브라우져를 실행해서 아래와 같이 접속합니다. 짠하고 아래와 같이 비주얼하게 나옵니다.
http://localhost:6006