파이썬(Python)

텐서플로우(Tensorflow) 의 Shape, Rank, Axis 알아보기!

알통몬_ 2018. 6. 18. 17:53
반응형


공감 및 댓글은 포스팅 하는데

 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 

도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 

만들어 나가겠습니다^^

 


이번 포스팅에서는 Tensorflow의 Shape, Rank, Axis 에 대해 공부합니다.


Shape : shape(??) 안에 들어간 ?? 의 배열 형태를 알려줍니다.

1
2
3
4
5
6
7
8
9
#Shape
import tensorflow as tf
 
sess = tf.Session()
 
= tf.constant([1,2,3,4])
tf.shape(t).eval(session=sess)
 
OUTPUT : array([4])
cs

t 값을 아래처럼 바꾸면 OUTPUT도 아래처럼 나옵니다.

1
2
3
= tf.constant([[1,2], [3,4]])
 
OUTPUT : array([22])
cs

간단히 말해 배열이 몇 차원으로 이뤄졌는지, 배열의 요소가 몇 개인지? 확인 할 수 있습니다.

1
2
3
4
5
6
7
8
9
import tensorflow as tf
 
sess = tf.Session()
 
t1 = tf.constant([[[[1,2,3,4],[1,2,3,4], [1,2,3,4]],
                   [[1,2,3,4],[1,2,3,4], [1,2,3,4]]]])
tf.shape(t1).eval(session=sess)
 
OUTPUT : array([1234])
cs

Shape을 가장 쉽게 구하는 방법은 먼저 여는 대괄호의 갯수를 셉니다.

위 코드를 예제로 보면 여는 대괄호가 4개죠?

때문에 array([?,?,?,?]) 라는 값이 나옵니다.

그리고 가장 안에 있는 배열의 요소 수가 가장 뒤 ? 에 들어갑니다.

각 배열들의 [1,2,3,4] 이죠? 그럼 각 배열들의 요소의 갯수는 4개이므로

array([?,?,?,4]) 입니다.

그리고 대괄호를 하나 나가서 안에서 2번째 대괄호 안의 요소 수를 보면

각 [1,2,3,4], [1,2,3,4], [1,2,3,4] 를 가지고 있습니다. 총 3개의 배열을 가지죠?

array([?,?,3,4]) 의 형태가 되겠군요.

이제 또 대괄호 하나를 나갑니다. 그럼 

[[1,2,3,4],[1,2,3,4], [1,2,3,4]]

이런 형태를 2개 가집니다.

array([?,2,3,4])의 형태를 예상할 수 있습니다.

그리고 이제 마지막으로 첫 번째 대괄호 안의 값은

[[[1,2,3,4],[1,2,3,4], [1,2,3,4]], [[1,2,3,4],[1,2,3,4], [1,2,3,4]]]

요 친구 하나네요.

때문에 shape은 array([1,2,3,4])가 나오게 되는 것입니다.

실습을 해보시면서 천천히 공부해보시면 금방 이해가 가실거에요.

하지만 아래 사진처럼 각 배열의 각 요소들의 갯수가 다르면 에러가 발생합니다.


Rank : Rank는 배열이 몇 차원인지를 말합니다.

1
2
3
4
5
6
import tensorflow as tf
 
sess = tf.Session()
 
t1 = tf.constant([1,2,3])
t2 = tf.constant([[1,2], [3,4]])
cs

t1 의 경우 Rank 가 1이고, t2의 경우  Rank 가 2입니다.

간단히 말해 Rank는 여는 대괄호의 갯수를 세보면 됩니다.


Axis : 축 인데요, Axis의 최대 값은 rank-1 인데요.

Axis 는 값이 0부터 시작하기 때문에 그렇습니다.

가장 바깥 대괄호의 axis = 0 이고 , 가장 안쪽은 Rank-1 이라고 생각하시면 됩닏,.


이상입니다.

감사합니다.


반응형