본문 바로가기
[Framework] - Tensorflow

# 1. tf.keras.backend.permute_dimensions

by Bebsae 2022. 3. 17.
a = np.arange(12).reshape((3, 4))
t = tf.constant(a)
t
>>>
tf.Tensor(
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]], shape=(3, 4), dtype=int32)

위와 같은 (3, 4) dimension을 갖는 텐서가 있다. axis=0은 3개의 원소, axis=1은 4개의 원소가 존재한다. 이 텐서를 전치시키려고 한다면 다음과 같이 할 수 있다.

 

tf.keras.backend.permute_dimensions(t, pattern=(1, 0))
>>>
<tf.Tensor: shape=(4, 3), dtype=int32, numpy=
array([[ 0,  4,  8],
       [ 1,  5,  9],
       [ 2,  6, 10],
       [ 3,  7, 11]])>

여기서 중요한 인자는 pattern인데, (1, 0)의 의미는 텐서 t를 (axis=1의 값, axis=0의 값)차원으로 재구성한다는 의미이다. 즉, (4, 3) 차원으로 변형되면서 전치가 이루어진다.

 

 

a = np.arange(12).reshape((2, 2, 3))
a
>>>
array([[[ 0,  1,  2],
        [ 3,  4,  5]],

       [[ 6,  7,  8],
        [ 9, 10, 11]]])
        
t = tf.constant(a)
t
>>>
<tf.Tensor: shape=(2, 2, 3), dtype=int32, numpy=
array([[[ 0,  1,  2],
        [ 3,  4,  5]],

       [[ 6,  7,  8],
        [ 9, 10, 11]]])>
        
tf.keras.backend.permute_dimensions(t, pattern=(2, 1, 0))
>>>
<tf.Tensor: shape=(3, 2, 2), dtype=int32, numpy=
array([[[ 0,  6],
        [ 3,  9]],

       [[ 1,  7],
        [ 4, 10]],

       [[ 2,  8],
        [ 5, 11]]])>

이전 예제보다 고차원인 (2, 2, 3) shape에 대해 재구성하는 예제이다. (axis=2, axis=1, axis=0)순으로 패턴이 지정되었기 때문에 (3, 2, 2)의 shape을 갖는 텐서가 나타난다.

 

참고

https://ko.wikipedia.org/wiki/%EC%88%9C%EC%97%B4

 

순열 - 위키백과, 우리 모두의 백과사전

3개의 서로 다른 공에 대한 총 6가지의 순열 루빅스 큐브의 면에 대한 회전은 그 면의 9개의 부분에 대한 한 가지 순열이다. 수학에서, 순열(順列, 문화어: 차례무이, 영어: permutation 퍼뮤테이션[*])

ko.wikipedia.org

https://docs.w3cub.com/tensorflow~2.3/keras/backend/permute_dimensions.html

 

tf.keras.backend.permute_dimensions - TensorFlow 2.3 - W3cubDocs

tf.keras.backend.permute_dimensions Permutes axes in a tensor. View aliases Compat aliases for migration See Migration guide for more details. tf.compat.v1.keras.backend.permute_dimensions tf.keras.backend.permute_dimensions( x, pattern ) Arguments x Tenso

docs.w3cub.com

 

'[Framework] - Tensorflow' 카테고리의 다른 글

# 0. 데이터 입력 파이프라인 API  (0) 2022.03.01

댓글