tensorflow
tensor
#
Find similar titles
- (rev. 1)
- ygkim
Structured data
- Category
- Programming
tensorflow #
Tensorflow는 이름 그대로 텐서(tensor)를 흘려보내면서(flow) 데이터를 처리하는 라이브러리다. 텐서플로를 사용하기 위해서는 텐서플로 라이브러리를 임포트해주어야 한다.
import tensorflow as tf
다음은 tf.constant로 상수를 hello 변수에 저장하는 코드이다.
hello = tf.constant('Hello, Tensorflow')
print(hello)
위 코드를 실행한 결과는 다음과 같다.
Tensor("Const:0", shape=(), dtype=string)
tensor #
텐서는 텐서플로에서 다양한 수식을 계산하기 위한 가장 기본적인 자료형이다.
3 # 랭크 0 텐서, shape [] 스칼라
[1, 2, 3] # 랭크 1 텐서, shape [3] 벡터
[[1, 2, 3], [4, 5, 6]] # 랭크 2 텐서, shape [2, 3] 행렬
[[[1, 2, 3]], [[7, 8, 9]]] # 랭크 3 텐서, shape [2, 1, 3]
랭크는 텐서의 차원을 의미한다. 만약 랭크가 0이라면 스칼라, 1이라면 벡터, 2라면 행렬, 3이상이라면 n-Tensor 또는 n차원 텐서라고 한다. shape란 텐서가 몇 개의 행과 열을 가지는지를 의마한다. 텐서의 타입이란 텐서가 담을 수 있는 데이터의 타입을 의마한다. tf.float32, tf.int32 등은 텐서가 실수를 담을 수 있는지, 정수를 담을 수 있는지의 여부이다.
상수의 덧셈은 다음과 같이 구현할 수 있다.
a = tf.constant(3)
b = tf.constant(5)
c = tf.add(a, b)
print(c)
위 코드를 실행한 결과는 다음과 같다.
Tensor("Add:0", shape=(), dtype=int32)
텐서플로는 그래프 생성과 실행으로 분리되어 있다. 텐서와 텐서의 연산들을 먼저 정의한 후에 그래프를 생성하고, 이후에 연산을 실행하는 코드를 넣어 원하는 시점에 그래프를 실행하도록 한다.
그래프 #
그래프 생성 단계에서는 연산 과정을 그래프 형태로 표현한다. 그래프는 노드(node)와 엣지(edge)로 이루어진 자료구조이다. 텐서플로는 노드에 연산(operator), 변수(variable), 상수(constant) 등을 정의하고, 노드들간의 연결인 엣지를 통해 텐서를 주고받으며 계산을 수행한다.
그래프 실행은 session 안에서 이뤄져야 하며, 다음과 같이 session 객체와 run 메서드를 이용한다.
sess = tf.Session()
print(sess.run(hello))
print(sess.run([a, b, c]))
sess.close()
위 코드를 실행한 결과는 다음과 같다.
b'Hello, TensorFlow!'
[3, 5, 10]
참고문헌 #
1 골빈해커의 3분 딥러닝 텐서플로맛