페이지

2022년 7월 22일 금요일

2.3.4 텐서 크기 변환

 꼭 알아 두어야 할 세 번째 턴서 연산은 턴스 크기 변환(tensor reshaping)입니다. 첫 번째 신경망 예제의 Dense 층에서는 사용되지 않지만 신경망에 주입할 숫자 데이터를 전처리할 때 사용했습니다.

train_images = train_images.reshape((60000, 28 * 28))

텐서의 크기를 변환한다는 것은 특정 크기에 맞게 열과 행을 재배열한다는 뜻입니다. 당연히 크기가 변환된 텐서는 원래 턴서와 원소 갯수가 동일합니다. 간단한 예제를 통해 크기 변환을 알아보겠습니다.

>>> x = np.array([[0., 1.],

                        [2., 3.],

                        [4., 5.]])

>>> print(x.shape)

(3, 2)

>>> x = x .reshape((6, 1))

>>> x

array([[0.],

        [1.],

        [2.],

        [3.],

        [4.],

        [5.]])

>>> x = x.reshape((2, 3))

>>> x

array([[0., 1., 2.],

        [3., 4., 5.]])

자주 사용하는 특별한 크기 변환은 전치(transposition)입니다. 행렬의 전치는 행과 열을 바꾸는 것을 의미합니다. 즉 x[i, :]이 x[:, i]가 됩니다.

>>> x = np.zeros((300, 20)) .................. 모두 0으로 채워진 (300, 20) 크기의 행렬을 만듭니다.

>>> x = np.transpose(x)

>>> print(x.shape)

(20, 300)

    

댓글 없음: