Basic Usage 기초 사용법
TensorFlow를 사용하려면 TensorFlow가 어떻게 작동하는지를 이해해야 합니다:
To use TensorFlow you need to understand how TensorFlow:
l 계산(computations)을 그래프로 어떻게 표현하는지.
Represents computations as graphs.
l Sessions의 맥락에서 그래프를 어떻게 실행하는지.
Executes graphs in the context of Sessions.
l 데이터를 tensors로 어떻게 표현하는지.
Represents data as tensors.
l 변수(Variables)로 상태(state)를 어떻게 유지하는지.
Maintains state with Variables.
l 임의적 연산(operations, ops)에 어떻게 데이터를 공급하고, 연산에서 어떻게 데이터를 가져오는지.
Uses feeds and fetches to get data into and out of arbitrary operations.
Overview
TensorFlow는 계산(computations)을 그래프로 표현하는 프로그래밍 시스템입니다.
TensorFlow is a programming system in which you represent computations as
graphs.
그래프 안의 Nodes를 ops(operations의 줄임 말)라고 합니다.
Nodes in the graph are called ops (short for operations).
1개의 op는 0개 이상의 Tensors를 취하고, 약간의 계산(computation)을 하며, 0개 이상의 Tensors를 만들어냅니다.
An op takes zero or more Tensors, performs some computation, and produces
zero or more Tensors.
Tensor는 타입된 다-차원의 배열(typed
multi-dimensional array)입니다.
A Tensor is a typed multi-dimensional array.
예를 들어, 이미지의 미니-배치(mini-batch)를, 차원(dimensions) [batch, height, width, channels]을 가진 부동소수점수(floating point numbers)의 4-D 배열(array)로 표현할 수 있습니다.
For example, you can represent a mini-batch of images as a 4-D array of floating
point numbers with dimensions [batch, height, width, channels].
TensorFlow 그래프는 계산(computations)에 대한 서술 입니다.
A TensorFlow graph is a description of computations.
그래프가 무엇인가를 계산하려면, 반드시 Session안에
그래프를 launch시켜야 합니다.
To compute anything, a graph must be launched in a Session.
Session은 그래프 ops를 CPUs나 GPUs와 같은 장치에 위치시키고, 그래프를
실행시킬 methods를 제공합니다.
A Session places the graph ops onto Devices, such as CPUs or
GPUs, and provides methods to execute them.
이들 methods는 ops가 생성시킨 tensor를 리턴하는데, 파이썬에서는 numpy ndarray 객체로, C와 C++에서는 tensorflow::Tensor 인스턴스로 리턴합니다.
These methods return tensors produced by ops as numpy ndarray objects in Python, and
astensorflow::Tensor instances in C and C++.
계산그래프 The computation
graph
TensorFlow 프로그램은 통상적으로 그래프를 조립하는 구축 단계, 그리고 그래프 안에서 ops를 실행하기 위하여 session을 사용하는 실행 단계로 구성됩니다.
TensorFlow programs are usually structured into a construction phase, that
assembles a graph, and an execution phase that uses a session to execute ops in
the graph.
예를 들어, 구축 단계에서 신경망(neural network, NN)을 표현하고 훈련시키고, 실행 단계에서 그래프 내의 훈련용 ops 1세트를 반복적으로 실행하는 것이 일반적입니다.
For example, it is common to create a graph to represent and train a neural
network in the construction phase, and then repeatedly execute a set of
training ops in the graph in the execution phase.
TensorFlow는 C,
C ++, 파이썬 프로그램에서 사용할 수 있습니다.
TensorFlow can be used from C, C++, and Python programs.
현재 파이썬 라이브러리를 사용하면 그래프 조립하기가 매우 쉬운데, 그 이유는 C와 C ++ 라이브러리에는 없는, 대형 도우미 함수 세트를 파이썬 라이브러리가 제공하기 때문 입니다.
It is presently much easier to use the Python library to assemble graphs, as it
provides a large set of helper functions not available in the C and C++
libraries.
session 라이브러리는 3가지 언어에 대하여 동등한 기능을 갖고 있습니다.
The session libraries have equivalent functionalities for the three languages.
그래프 구축하기 Building the
graph
그래프 구축은, Constant 처럼 입력(소스 ops)이 필요 없는 ops로 시작해서, 계산을 수행 하는 다른 ops로 그 출력을 전달합니다.
To build a graph start with ops that do not need any input (source ops), such
as Constant, and pass their output to other ops that do computation.
파이썬 라이브러리의 ops생성자(constructors)는 생성된 ops의 출력을
의미하는
객체를 리턴 합니다.
The ops constructors in the Python library return objects that stand for the
output of the constructed ops.
다른 ops에서의 입력으로 사용하기 위하여 이 출력을 다른 ops생성자에게 전달할 수 있습니다.
You can pass these to other ops constructors to use as inputs.
TensorFlow 파이썬 라이브러리에는 ops생성자가
노드를
추가하는
기본(default) 그래프가 있습니다.
The TensorFlow Python library has a default graph to which ops
constructors add nodes.
많은 애플리케이션에 대한 기본 그래프는 충분히 있습니다.
The default graph is sufficient for many applications.
여러 그래프를 명시적으로 관리하는 방법은 Graph
class 설명서를 참조하십시오.
See the Graph class documentation for how to explicitly manage multiple graphs.
import tensorflow as tf
# 1x2 matrix를 만드는 constant op 만들어서, 이 op를 기본 그래프에 노드로 추가
# 생성자가 리턴한 값은 constant op의 output을 표현
matrix1 = tf.constant([[3.,
3.]])
# 2x1 matrix를 생성하는 다른 constant op 만들기
matrix2 = tf.constant([[2.],[2.]])
# 'matrix1'과 'matrix2'를 입력으로 받는 matmul op 만들고, 리턴된 값 'product'는 matrix 곱셈의 결과를 표현
product = tf.matmul(matrix1, matrix2)
이제 기본 그래프는 3개의 노드(2개의
constant() op, 1개의 matmul() op)를 갖게 되었습니다.
The default graph now has three nodes: two constant() ops and
one matmul() op.
실제로 매트릭스를 곱해서 그 곱셈 결과를 얻으려면, 세션에서 그래프를 가동시켜야 합니다.
To actually multiply the matrices, and get the result of the multiplication,
you must launch the graph in a session.
세션에서 그래프 가동시키기 Launching the graph in a session
구축 한 후 가동시킵니다. Launching follows
construction.
그래프를 가동시키려면 객체 Session을 생성시켜야 합니다.
To launch a graph, create a Session object.
세션 생성자는 아규먼트 없이 기본 그래프를 가동시킵니다.
Without arguments the session constructor launches the default graph.
모든 세션 API는 Session
class를 참조하세요.
See the Session class for the complete session API.
# 기본그래프 가동시키기
sess = tf.Session()
# matmul op을 가동시키기 위하여 session 'run()' method를 call한 다음, matmul op의 출력을 표현하는'product'를 전달
# 이것은 matmul op의 출력을 되받고자 하는 call을 가리킴
# op에 필요한 모든 입력은 세션이 자동으로 가동시키며, 그들은 통상적으로 평행으로 가동됨
# call 'run(product)'은 이와 같이 그래프 내의 3개 ops(2개의 constants, 1개의 matmul) 를 실행
# op의 출력은 numpy `ndarray` 객체로 ‘result’ 안에 리턴됨.
result = sess.run(product)
print(result)
# 출력된 결과
[[ 12.]]
# 완료 후 Session을 닫기
sess.close()
리소스를 해제하기 위하여 Sessions를 닫아야 합니다.
Sessions should be closed to release resources.
"with" block을 가진 Session을 enter 할 수도 있습니다.
You can also enter a Session with a "with" block.
Session은 with block의 끝에서 자동으로 닫힙니다.
The Session closes automatically at the end of the with block.
with tf.Session() as sess:
result = sess.run([product])
print(result)
# 출력된 결과
[array([[ 12.]], dtype=float32)]
TensorFlow를 구현하면, 그래프 정의가, CPU 또는 컴퓨터의 GPU 카드 중 하나와 같은 사용 가능한 컴퓨팅 리소스에 걸쳐 분산된, 실행 가능한 ops로 변환됩니다.
The TensorFlow implementation translates the graph definition into executable
operations distributed across available compute resources, such as the CPU or
one of your computer's GPU cards.
일반적으로 CPU나 GPU를 명시적으로 지정할 필요는 없습니다.
In general you do not have to specify CPUs or GPUs explicitly.
GPU가 있는 경우, TensorFlow는 가능한 한 많은 작업을 위해, 첫 번째 GPU를 사용 합니다.
TensorFlow uses your first GPU, if you have one, for as many operations as
possible.
기계에 사용 가능한 GPU가 2개 이상 있는 경우, 첫째 GPU보다 먼저 사용하려면 해당 GPU에 ops를 명시적으로 할당해야 합니다.
If you have more than one GPU available on your machine, to use a GPU beyond
the first you must assign ops to it explicitly.
op에 사용할 CPU 또는 GPU를 규정하려면 Device statements을 사용하십시오:
Use with...Device statements to specify which CPU or GPU to use for
operations:
with tf.Session() as sess:
with tf.device("/gpu:1"):
matrix1 = tf.constant([[3., 3.]])
matrix2 = tf.constant([[2.],[2.]])
product = tf.matmul(matrix1, matrix2)
...
디바이스는 문자열로 규정됩니다. 현재 지원되는 디바이스는:
Devices are specified with strings. The currently supported devices are:
"/cpu:0": The CPU of your machine.
"/gpu:0": The GPU of your machine, if you have one.
"/gpu:1": The second GPU of your machine, etc.
See Using GPUs for more information about GPUs and TensorFlow.
'TensorFlow' 카테고리의 다른 글
변수 Variables (11) (0) | 2016.03.31 |
---|---|
Interactive 사용법 (10) (0) | 2016.03.31 |
TensorFlow Introduction (8) (0) | 2016.03.31 |
회귀 구현하기 Implementing the Regression (7) (0) | 2016.01.29 |
소프트맥스 회귀 Softmax Regressions (6) (0) | 2016.01.28 |
댓글