꼭 알아 두어야 할 세 번째 턴서 연산은 턴스 크기 변환(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)
댓글 없음:
댓글 쓰기