본문 바로가기
TensorFlow

기초 사용법 Basic Usage(9)

by EasyGPT 2016. 3. 31.
반응형

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

댓글