如何使用TensorBoard針對PyTorch的embedding輸出進行2D或3D的T-SNE視覺化?

如何使用PyTorch的Feature Extractor輸出進行t-SNE視覺化?文章當中,介紹了如何進行2D的視覺化輸出方式。

在本文當中,將介紹透過TensorBoard進行2D與3D T-SNE輸出的方法,比起之前所介紹的方法,方便許多。但是TensorBoard方法若遇到上萬張大尺寸(如:224x224)的圖片時,執行速度會較慢。

範例程式碼

import tensorboardX as tbx     # 本範例會使用到tensorboardX套件
writer = tbx.SummaryWriter()

重點如下:

features為經由feature extractor萃取出來的特徵、labels為樣本實際的標籤資料、label_imgs為圖片的Tensor資料(N x C x H x W)格式

  • mat (torch. Tensor or numpy.array): 一個矩陣,每行代表特徵空間的一個數據點。mat的維度是(N, D),其中N為圖片數量;D為特徵維度
  • metadata (list or torch. Tensor or numpy.array, optional): 一個一維清單,mat 中每行數據的 label,大小應和 mat 行數相同
  • label_img (torch. Tensor, optional): 一個形如 NxCxHxW 的張量,對應 mat 每一行數據顯示出的圖像,N 應和 mat 行數相同。N*W開根號後須小於或等於8192才能被Tensorboard正常載入,否則會出現Error: Sprite image of dimensions 16384px x 16384px exceeds maximum dimensions 8192px x 8192px
import tensorboardX as tbx
writer = tbx.SummaryWriter()
writer.add_embedding(mat=features, metadata=labels, label_img=label_imgs)
writer.close()

當程式執行完後,會自動將資料保存到runs資料夾,這時候使用以下指令,根據Terminal回傳的網址,即可至網頁上觀看視覺化的效果。右上角的下拉式選單要選擇PROJECTOR才會正常顯示。

tensorboard --logdir=runs

效果

下圖為示意圖,透過該方法能夠將圖片呈現在2D或3D的環境當中,除此之外,也能切換使用UMAP、T-SNE、PCA這三個不同的方法的視覺效果。

可能會遇到的問題

1. 卡再Fetching sprite image…
[1]tensorboard fetching sprite image_UI_Shero的专栏-CSDN博客
[2]Tensorboard parsing metadata or fetching sprite images takes forever - Stack Overflow調整projector_config.pbtxt中的路徑:
embeddings {
tensor_name: "default:00000"
tensor_path: "00000/default/tensors.tsv"
metadata_path: "00000/default/metadata.tsv"
sprite {
image_path: "00000/default/sprite.png"
single_image_dim: 112
single_image_dim: 112
}
}

參考資料

[转载]Pytorch学习笔记8-可视化 — 云远·笨小孩 — 博客园 (cnblogs.com)

pytorch 中使用tensorboard,详解writer.add_embedding函数的作用(一)_小白的博客-CSDN博客

把pytorch產生的影像資料用tensorboard 的 embedding visualization 顯示出來,感覺蠻不錯der | by Tzu-Wei Huang | Medium

TensorBoard: Embedding Visualization TensorFlow Guide官方教程 w3cschool

--

--

Machine Learning | Deep Learning | https://linktr.ee/yanwei

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store