더북(TheBook)

이미지 데이터를 불러왔으니 24개의 이미지에 대해 레이블 정보와 함께 출력해 보겠습니다.

코드 5-14 학습에 사용될 이미지 출력

samples, labels = iter(train_loader).next() ------ ①
classes = {0:'cat', 1:'dog'} ------ 개와 고양이에 대한 클래스로 구성
fig = plt.figure(figsize=(16,24))
for i in range(24): ------ 24개의 이미지 데이터 출력
    a = fig.add_subplot(4,6,i+1)
    a.set_title(classes[labels[i].item()]) ------ 레이블 정보(클래스)를 함께 출력
    a.axis('off')
    a.imshow(np.transpose(samples[i].numpy(), (1,2,0))) ------ ②
plt.subplots_adjust(bottom=0.2, top=0.6, hspace=0)

① 반복자(iterator, for 구문과 같은 효과)를 사용하려면 iter()next()가 필요합니다. iter()는 전달된 데이터의 반복자를 꺼내 반환하며, next()는 그 반복자가 다음에 출력해야 할 요소를 반환합니다. 즉, iter()로 반복자를 구하고 그 반복자를 next()에 전달하여 차례대로 꺼낼 수 있습니다. 앞의 코드에서 반복자는 train_loader가 되기 때문에 train_loader에서 sampleslabels의 값을 순차적으로 꺼내서 저장합니다. 간단히 정리하면 train_loader에서 데이터를 하나씩 꺼내 오겠다는 의미입니다.

np.transpose는 다음 그림과 같이 행과 열을 바꿈으로써 행렬의 차원을 바꾸어 줍니다.

▲ 그림 5-33 transpose()

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.