Python/PyTorch 공부

이미지 분류 신경망의 결과를 t-SNE 시각화하기

AI 꿈나무 2021. 7. 11. 00:27
반응형

 안녕하세요ㅎㅎ 이번 포스팅에서는 이미지 분류 task를 목적으로 학습된 신경망의 출력값을 t-SNE으로 시각화 해보겠습니다.

 

 제가 학습한 모델은 STL-10 dataset에서 성능이 36% 밖에 안나오기 때문에, t-SNE 시각화 그림이 명확하지 않습니다.

 

from sklearn.manifold import TSNE
import seaborn as sns
tsne = TSNE()

# t-SNE 시각화 함수 정의
def plot_vecs_n_labels(v, labels, fname):
    fig = plt.figure(figsize = (10,10))
    plt.axis('off')
    sns.set_style('darkgrid')
    sns.scatterplot(v[:,0], v[:,1], hue=labels, legend='full', palette=sns.color_palette("bright", 10))
    plt.legend(['airplane', 'bird', 'car', 'cat', 'deer', 'dog', 'horse', 'monkey', 'ship', 'truck'])
    plt.savefig(fname)


# change batch_size
val_dl = DataLoader(val_ds, 1024, True)

for x, y in val_dl:
    x = x.to(device)
    with torch.no_grad():
        pred = q_encoder(x)
        pred = linear_classifier(pred)
        
    # 모델의 출력값을 tsne.fit_transform에 입력하기
    pred_tsne = tsne.fit_transform(pred.cpu().data)
    
    # t-SNE 시각화 함수 실행
    plot_vecs_n_labels(pred_tsne, y, 'tsen.png')
    break

 

 

 모델이 36%의 낮은 정확도를 갖고 있기 때문에, 시각화 그림이 예쁘게 나오진 않네요

반응형