① 기본적으로 파이토치는 이미지 데이터셋을 [배치 크기, 채널, 너비, 높이(batch size, channel, width, height)] 순서대로 저장합니다. 하지만 이를 맷플롯립(matplotlib)으로 출력하기 위해서는 이미지가 [너비, 높이, 채널] 형태이어야 합니다. 즉, 데이터의 형태 변경이 필요한데, 이때 사용할 수 있는 것이 넘파이 라이브러리의 transpose()입니다.
이제 이미지 출력을 위한 그래프 방식을 정의합니다.
코드 8-6 이미지 데이터 출력 함수
def show_batch_images(dataloader):
images, labels = next(iter(dataloader)) ------ 이미지의 크기는 (4, 28, 28, 1(배치 크기, 높이, 너비, 채널))이 됩니다.
img = torchvision.utils.make_grid(images) ------ 좌표에 이미지 픽셀을 대응시켜 그리드 형태로 출력합니다.
imshow(img, title=[str(x.item()) for x in labels]) ------ imshow 함수를 사용함으로써 데이터의 형태는 (채널, 높이, 너비)에서 (높이, 너비, 채널)로 변경됩니다.
return images, labels
앞에서 생성한 함수를 이용하여 이미지를 출력해 봅니다.
코드 8-7 이미지 출력
images, labels = show_batch_images(trainloader)