일반적으로 행렬의 차원을 변경하는 이유는 행렬의 내적 연산 때문입니다. 다음 그림과 같이 A라는 행렬과 B라는 행렬의 내적 결과는 C가 됩니다. 이때 A 행렬의 행과 B 행렬의 열의 수가 같아야 내적이 가능합니다. A와 B의 행과 열의 수가 달라 내적이 불가능할 때는 np.transpose()나 np.reshape() 등으로 차원을 조정해야 합니다.
▲ 그림 5-34 행렬의 내적
print(samples.shape)을 통해 데이터의 형태를 확인해 보면 torch.Size([32, 3, 224, 224])가 출력됩니다. 이 상태 그대로(np.transpose를 적용하지 않으면) ‘Invalid shape (3, 224, 224) for image data’와 같은 오류가 발생합니다.
따라서 np.transpose(samples[i].numpy(), (1,2,0))을 사용해서 (224, 224, 3)과 같은 형태로 변환한 후 사용해야 합니다.