Introduction 소개
TensorFlow is a general-purpose system for
graph-based computation. A typical use is machine learning. We'll introduce the
basic concepts of TensorFlow using some simple examples.
TensorFlow는 그래프-기반 계산(computation)을 위한 범용 시스템입니다. 일반적으로 기계학습(ML)에 사용됩니다. 몇 가지 간단한 예제를 사용하여 TensorFlow의 기본 개념을 소개합니다.
TensorFlow gets its name from tensors, which
are arrays of arbitrary dimensionality. A vector is a 1-d array and is known as
a 1st-order tensor. A matrix is a 2-d array and a 2nd-order tensor. The
"flow" part of the name refers to computation flowing through a
graph. Training and inference in a neural network, for example, involves the
propagation of matrix computations through many nodes in a computational graph.
TensorFlow는 텐서에서 이름을 가져왔는데, 텐서는 임의의 차원의 배열(arrays)입니다. 벡터는 1 차원(1-d) 배열로, 첫째(1st)-order 텐서로 알려져 있습니다. 행렬(matrix)은 2차원(2-d) 배열로 두번째 (2nd)-order
텐서입니다. 이름 TensorFlow에서 "흐름(flow)"은 그래프를 통해 흐르는 계산을 가리킵니다. 예를 들어, 신경망(NN)에서 훈련과 추론은, 계산 그래프 내의 많은 노드를 통한 행렬 계산의 전파를 포함합니다.
When you think of doing things in TensorFlow, you
might want to think of creating tensors (like matrices), adding operations
(that output other tensors), and then executing the computation (running the
computational graph). In particular, it's important to realize that when you
add an operation on tensors, it doesn't execute immediately. Rather, TensorFlow
waits for you to define all the operations you want to perform. Then,
TensorFlow optimizes the computation graph, deciding how to execute the
computation, before generating the data. Because of this, a tensor in
TensorFlow isn't so much holding the data as a placeholder for holding the
data, waiting for the data to arrive when a computation is executed.
TensorFlow에서 어떤 일을 수행한다고 생각하면, 텐서 생성(행렬 등), 연산(op) 추가(다른 텐서를 출력하는), 계산 실행(계산 그래프 실행)을 하고자 생각할 것입니다. 특히, 텐서에 op를 추가하는 즉시 op가 실행되지 않음을 알아야 합니다. 수행하고자 하는 모든 op가 정의될 때까지 TensorFlow는 기다립니다. 그런 다음 TensorFlow는 데이터를 생성시키기 전에, 계산 실행방법을 결정하면서, 계산 그래프를 최적화합니다. 이 때문에 TensorFlow 안의 텐서는 데이터 보유용 placeholder에 너무 많은 데이터를 보유하지 않고, 계산이 실행될 때 데이터의 도착을 기다립니다.
Let's get you up and running with TensorFlow!
TensorFlow로 가서 가동시켜봅시다!
But before we even get started, let's peek at what TensorFlow code looks like
in the Python API, so you have a sense of where we're headed.
시작 전에, TensorFlow 코드가 Python API에서 어떻게 보이는지 잠깐 살펴보면, 무엇을 해야 할 지 알 수 있습니다.
Here's a little Python program that makes up
some data in two dimensions, and then fits a line to it.
아래는 약간 2차원 데이터를 만들어서 그 라인을 fit하는 작은 파이썬 프로그램입니다.
import tensorflow as tf
import numpy as np
# Create 100 phony x, y data points in NumPy,
y = x * 0.1 + 0.3
# NumPy, y = x * 0.1 + 0.3안에100개의 가상 x,
y 데이터포인트를 만듭니다
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
# y_data = W * x_data + b를 계산하는 W와 b의 값 찾기
# (We know that W should be 0.1 and b 0.3,
but Tensorflow will figure that out for us.)
# (W가 0.1이고 b는 0.3 이어야 함을 알지만,
Tensorflow가 그것을 알아냅니다.)
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.
# 시작 전에 변수 초기화하기. 이것을 제일 먼저
'run' 시킬 것입니다.
init = tf.initialize_all_variables()
# Launch the graph. 그래프 시작하기
sess = tf.Session()
sess.run(init)
# Fit the line. 라인 fit시키기
for step in xrange(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] 최적 fit이 W: [0.1], b: [0.3]임을 학습합니다
The first part of this code builds the data
flow graph.
이 코드의 첫째 파트는 데이터흐름그래프를 만듭니다.
TensorFlow does not actually run any
computation until the session is created and the run function is
called.
TensorFlow는 세션이 생성되어 run 함수가 호출될 때 까지, 실제로 어떤 계산도 하지 않습니다.
To whet your appetite further, we suggest you
check out what a classical machine learning problem looks like in TensorFlow.
In the land of neural networks the most "classic" classical problem
is the MNIST handwritten digit classification. We offer two introductions here,
one for machine learning newbies, and one for pros. If you've already trained
dozens of MNIST models in other software packages, please take the red pill. If
you've never even heard of MNIST, definitely take the blue pill. If you're
somewhere in between, we suggest skimming blue, then red.
ML 학습 의지를 돋구기 위해, 전형적인 ML 문제가 TensorFlow에서는 어떤 모습인지를 확인해야 합니다. NN 영역에서 가장 "전형적인" 문제는
MNIST 수기 숫자 분류입니다. ML 초보자용과 전문가용 2가지를 소개합니다. 이미 다른 소프트웨어 패키지로 MNIST 모델을 수십 번 훈련시킨 경우, 전에 알 수 없던 현실 세계를 이해하기 바랍니다. MNIST를 들어 본 적이 없다면, 파란 약을 드시고, 중간이면, 파란 약을 훑어 본 다음 빨간 약을 드시면 됩니다.
Images licensed CC BY-SA 4.0; original by W. Carter
TensorFlow를 이미 배우고 있고 설치 의지가 확실하다면 이들을 건너 뛸 수 있습니다. 걱정하지 마세요, 여전히 MNIST을 볼 것입니다 -- 또한 TensorFlow 기능을 배우는 기술 교본에서 예제로 MNIST를 사용할 것입니다.
If you're already sure you want to learn and install TensorFlow you can skip
these and charge ahead. Don't worry, you'll still get to see MNIST -- we'll
also use MNIST as an example in our technical tutorial where we elaborate on
TensorFlow features.
Recommended Next Steps
'TensorFlow' 카테고리의 다른 글
Interactive 사용법 (10) (0) | 2016.03.31 |
---|---|
기초 사용법 Basic Usage(9) (0) | 2016.03.31 |
회귀 구현하기 Implementing the Regression (7) (0) | 2016.01.29 |
소프트맥스 회귀 Softmax Regressions (6) (0) | 2016.01.28 |
MNIST 데이터 The MNIST Data (5) (0) | 2016.01.26 |
댓글