Tensorflow의 상수에 대해서 살펴보겠습니다.
어떤 값을 입력해야 하는지 어떻게 출력이 되는지 한번 보겠습니다.
1. 정수
상수 값을 사용하기 위해서는 tf.constant() 함수를 사용해서 상수 x 값을 생성하면 됩니다.
정수 값인 3을 입력하여 x를 만들어보겠습니다.
그리고 총 두번 출력을 하도록 하였습니다. 한번은 x 값을 그대로 출력하고 다른 한번은 Tensorflow에서 제공하는 session을 실행하여 출력을 합니다.
import tensorflow as tf
x = tf.constant(3)
print(x)
sess = tf.Session()
result = sess.run(x)
print(result)
>Tensor("Const:0", shape=(), dtype=int32)
>3
import tensorflow as tf
x = tf.constant(3.)
print(x)
sess = tf.Session()
result = sess.run(x)
print(result)
3. Vector
자 이제 본격적으로 배열 혹은 벡터를 만들어 보겠습니다.
[3. , 3.] 으로 실수 3.0의 값이 두개인 벡터 x를 만들어 봅니다.
그러면 shape가 값이 2로 변합니다. 이것의 의미는 2개의 데이터를 가지고 있는 Vector를 말합니다.
이때의 x 는 2개의 데이터를 한번에 표현하고, 연산할 수 있는 상수 Vector가 됩니다.
물론 3개 이상의 데이터도 표현을 할 수 있고 이러한 형태의 데이터를 1차원 배열 혹은 Vector라고 합니다.
import tensorflow as tf
x = tf.constant([3.,3.])
print(x)
sess = tf.Session()
result = sess.run(x)
print(result)
>Tensor("Const:0", shape=(2,), dtype=float32)
>[ 3. 3.]
4. Matrix
이번에는 2 x 2 Matrix를 만들어 보겠습니다.
[] 괄호가 크게 하나가 있고 그안에 [] 괄호가 2개가 있으며 앞의 괄호안에는 실수 3.0이 2개가 있고 뒤의 괄호안에는 실수 5.0이 2개가 있습니다.
언듯 보면 참 햇갈리는 모양새로 되어 있어 출력된 결과를 보는게 나을 것 같습니다.
shape가 2,2로 행이 2개이고 열이 2개인 2x2 Matrix의 크기를 나타내주고 있습니다.
그리고 결과값으로 출력된 내용을 보면 좀더 보기가 편하게 줄 바꿈이 되어 1행에는 [3. 3.] 값이 존재하고 2행에는 [5. 5.] 값이 존재하는 것을 알 수 있습니다.
이렇게 Matrix의 형태가 되면 총 4개의 데이터를 표현하고 연산할 수 있는 x가 되며, 이런 형태를 2차원 배열 혹은 2x2 Matrix라고 말합니다.
데이터가 많아지면 많아질 수록 이 Matrix 크기가 엄청나게 커지게 되겠습니다.
import tensorflow as tf
x = tf.constant([[3.,3.],[5.,5.]])
print(x)
sess = tf.Session()
result = sess.run(x)
print(result)
>Tensor("Const:0", shape=(2, 2), dtype=float32)
>[[ 3. 3.]
[ 5. 5.]]
행을 하나더 추가해서 3x2 Matrix를 만들어 보았습니다.
import tensorflow as tf
x = tf.constant([[3.,3.],[5.,5.],[7.,7.]])
print(x)
sess = tf.Session()
result = sess.run(x)
print(result)
>Tensor("Const:0", shape=(3, 2), dtype=float32)
>[[ 3. 3.]
[ 5. 5.]
[ 7. 7.]]
지금까지는 2차원 형태의 데이터였는데,
3차원의 형태의 데이터도 가능할까요? 네~ 보기 정말 민망할정도로 조잡해 보이는데 가능은 합니다.
괄호가 3개가 중첩이 되어 있습니다. (어질어질ㅜㅜ )
3차원 이상이 되면 사람이 인식하는데 조금 어려워집니다. 우리가 3차원 이상의 데이터를 보고 다룬적이 별로 없어서 어색해서 그런것인데 이런 데이터를 잘 다루기 위해서는 공간감각(?) 같은 다차원의 데이터에 조금 익숙해 질 필요가 있을 것 같습니다.
이렇게 데이터들를 다차원적으로 표현할 수 있으며 이 모든 데이터를 다루는 기본이 되는 것이 Tensor 입니다.
import tensorflow as tf
x = tf.constant( [ [[3.,3.],[5.,5.],[7.,7.]],[[2.,2.],[4.,4.],[6.,6.]] ] )
print(x)
sess = tf.Session()
result = sess.run(x)
print(result)
>Tensor("Const:0", shape=(2, 3, 2), dtype=float32)
>[[[ 3. 3.]
[ 5. 5.]
[ 7. 7.]]
> [[ 2. 2.]
[ 4. 4.]
[ 6. 6.]]]
그리고, 지금까지 사용했던 tf.constant() 를 Tensorflow에서는 op(Operation)이라고 불릅니다. 일반적으로 함수라고 생각이 되어지는 것들을 의미합니다.
이 op들은 tensor 객체를 출력으로 제공해주는 주체라고 정의가 되어 있으며, Tensorflow 문서에서 자주 사용되는 term이니 잘 이해해 놓으시면 좋겠습니다.
Tensorflow의 기본 동작은 이러한 op 들이 session 안에서만 실제적으로 실행이 되도록 되어 있습니다. session 밖에서는 정의가 되면서 graph를 생성할 뿐이며 실행과는 무관하다고 합니다.
'Tensorflow' 카테고리의 다른 글
7. Tensorflow 시작하기 - 연산 (0) | 2016.10.23 |
---|---|
6. Tensorflow 시작하기 - 변수 (0) | 2016.10.19 |
4. 튜토리얼 예제로 한번 실행해보기2 (Neural Network) (0) | 2016.09.29 |
3. 튜토리얼 예제로 한번 실행해보기 (0) | 2016.09.28 |
2. Pycharm 설치하기 (remote server interpreter, Auto Deploy) (4) | 2016.09.27 |
댓글