论文中一般都会有数据分布的图,很直观的可以看出迁移过程中分类面的改变。
那么这种图是怎么画的呢?很容易想到就是降维(PCA等)了。这里使用更高效的T-SNE流行学习法。如果你想深究,可以看看这个博主的教程写得非常详细,还有其他降维方法。
如果你想学我这样大概了解一下就行了,那就可以跳过。怎么才能简单画出二维分布图呢?(三维一样的道理,不过稍微复杂点)我这里以pytorch自带的MNIST和SVHN数据为例。
数据预处理
pytorch里面直接调用是非常方便的,不过是tensor类型,我们要把它转为numpy格式。
MNIST(官方分成train和test了,使用的时候可以根据需要切换):
这里有个问题要注意:因为SVHN是三通道的,MNIST是单通道的,所以要记得expand成三通道的,不然无法concatenate在一起。
def get_mnist(train, path):
"""Get MNIST dataset loader."""
# image pre-processing
pre_process = transforms.Compose([transforms.Resize(6),