공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
이번 포스팅에서는 Tensorflow의 Shape, Rank, Axis 에 대해 공부합니다.
Shape : shape(??) 안에 들어간 ?? 의 배열 형태를 알려줍니다.
1 2 3 4 5 6 7 8 9 | #Shape import tensorflow as tf sess = tf.Session() t = tf.constant([1,2,3,4]) tf.shape(t).eval(session=sess) OUTPUT : array([4]) | cs |
t 값을 아래처럼 바꾸면 OUTPUT도 아래처럼 나옵니다.
1 2 3 | t = tf.constant([[1,2], [3,4]]) OUTPUT : array([2, 2]) | 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([1, 2, 3, 4]) | 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 이라고 생각하시면 됩닏,.
이상입니다.
감사합니다.