Introduction


자~ 설명보다는 한번 보는게 더 좋겠네요.

텐서플로우를 실행해볼까요.

예제 코드부터 간단히 시작해 봅시다. (텐서플로우 설치 후, 주피터 노트북에서 실행하면 편리하게 사용 가능)

 

무엇을 할 것인가?

첫 번째 예제

가중치 W와 위상차 b를 구하라.

y = W * x + b 라는 상황이 놓여 있다.

입력값 x에 대해서 y를 안다고 가정했을 때, 이를 텐서플로우에 학습시켜 적절한 알고리즘을 이용하여 최적의 W와 b 값을 찾아보자.

 

소스코드

간단한 머신러닝 예제
import tensorflow as tf
import numpy as np

# Create 100 phony x, y data points in NumPy, y = x * 0.1 + 0.3
x_data = np.random.rand(100).astype(np.float32)
y_data = x_data * 0.1 + 0.3

# Try to find values for W and b that compute y_data = W * x_data + b
# (We know that W should be 0.1 and b 0.3, but TensorFlow will
# figure that out for us.)
W = tf.Variable(tf.random_uniform([1], -1.0, 1.0))
b = tf.Variable(tf.zeros([1]))
y = W * x_data + b

# Minimize the mean squared errors.
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)

# Before starting, initialize the variables.  We will 'run' this first.
init = tf.initialize_all_variables()

# Launch the graph.
sess = tf.Session()
sess.run(init)

# Fit the line.
for step in range(201):
    sess.run(train)
    if step % 20 == 0:
        print(step, sess.run(W), sess.run(b))

# Learns best fit is W: [0.1], b: [0.3]

 

소스코드 설명

  1. 데이터 플로우 그래프 구축

가상의 소수점 데이터 x_data, y_data를 각각 100개씩 만들어 줍니다.

이 데이터의 관계는 x_data 값에 0.1 값을 곱하고 0.3을 더한 값이 y_data입니다.

여기서 0.1과 0.3을 모른다는 가정하에, 이 값을 찾아가는 과정을 텐서플로우 예제를 통해서 알아가는 겁니다.

텐서플로우를 사용할 것이니 import 하고요.

숫자와 관련된 파이선 함수도 써야 하니 numpy 라이브러리 import 합니다.

x_data, y_data 데이터를 임의로 생성한후, 곱해야하는 값을 W로, 더하는 값을 b로 변수명 설정합니다.

학습을 통해서 W와 b 값은 계속 최적의 값으로 학습이 되어지기 때문에 variable로 선언됩니다.

임의의 값을 W와 b 값으로 만들기 위하여 random_uniform, zeros 함수를 사용하여 값을 생성합니다.

결국 W에 x 값을 곱하고 b를 더한 값이 y가 되는데 이 y의 값이 원래 설정된 y_data 제곱에 최소가 되는 값을 찾도록 loss를 설정하고,

optimizer를 설정하고, 최적화는 loss가 최저가 되는 값이 되도록 경사하강법을 이용하여 학습 합니다...... 뭐 이런 이야기 같습니다. (저도 처음이라서 잘 모르는 상태입니다. → 접한지 3일째 되던 당시)

2. 텐서플로우 가동

아무튼 변수 초기화를 한 다음에 세션 받고, 시작합니다.(법칙임)

트레이닝 할 때는 20단계마다 그 값을 찍으면서 얼마나 값에 수렴해 나가는지 확인할 수 있습니다.

그러면 W는 0.1에 수렴하고, b는 0.3에 수렴해가는 결과를 기대할 수 있습니다.

 

 

소스코드 결과

코드 수행은 이미 설치한 jupyter에 예제에 코드 넣고 돌리면 돌아간다.

파일 하나 만들고, 거기서 직접 수행하도록 하면 좋겠지만, 아직은 모르니깐 일단 해 보고 넘어가자. 

 

앞으로 어떻게 접근할까

저처럼 이쪽 잘 모르는 사람도 있을 것이고, 그래도 어느 정도 경험해 봤다는 분도 있을 겁니다.

고전적으로 필기 인식과 관련해서 MNIST 문제가 있는데, 요거 관련해서 선택적으로 알약 복용하시면 됩니다,

MNIST for machine learning beginners tutorialDeep MNIST for machine learning experts tutorial

※ 이거 클릭한다고 해서 네오처럼 매트릭스 세상으로 보내지는건 아닐겁니다.

그리고 딱히 텐서플로우와 MNIST에 대해서는 이미 튜토리얼 예제로 제공하고 있으니 걱정할 필요 없습니다.

 

 

Recommended Next Steps

  • 레이블 없음