CIFAR10 T-SNE 绘制特征空间图
基本思想就是把测试数据输入模型,然后对模型提取的特征(未经过分类器)的部分进行降维绘图
1. 先引入包
import torch
from sklearn.manifold import TSNE # 这个是绘图关键
import random
import numpy as np
import matplotlib.pyplot as plt
import torch.nn as nn
from torchvision import datasets, transforms
2. 设置随机种子
为保证结果可复现,设置了随机种子
def setup_seed(seed):torch.manual_seed(seed)torch.cuda.manual_seed_all(seed)np.random.seed(seed)random.seed(seed)torch.backends.cudnn.benchmark = Falsetorch.backends.cudnn.deterministic = True
setup_seed(1337)
3. 准备测试数据及模型
transform = transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))]) # 对读取数据做个处理,打个包
testset = datasets.CIFAR10(root='../data/MNIST/', train=False,download=False, transform=transform)
testloader = torch.utils.data.DataLoader(testset, batch_size=32,shuffle=False, num_workers=2)
model_file = ["centralized_net.pkl"]
model = torch.load(model_name)
4. 输入测试数据得到特征表示
model.eval()
with torch.no_grad():for i, (image_batch, label_batch) in enumerate(testloader):image_batch, label_batch = image_batch.cuda(), label_batch.cuda()label_batch = label_batch.long().squeeze()inputs = image_batchlogits, feature = model(inputs)if i == 0:feature_bank = featurelabel_bank = label_batchlogits_bank = logitselse:feature_bank = torch.cat((feature_bank, feature))label_bank = torch.cat((label_bank, label_batch))logits_bank = torch.cat((logits_bank, logits))
5. 绘图
针对feature_bank
和label_bank
进行绘图
feature_bank = feature_bank.cpu().numpy()label_bank = label_bank.cpu().numpy()p, pseu = torch.max(torch.softmax(logits_bank, dim=-1), dim=-1)prob_bank = p.cpu().numpy()tsne = TSNE(2)output = tsne.fit_transform(feature_bank) # feature进行降维,降维至2维表示# 带真实值类别for i in range(10): # 对每类的数据画上特定颜色的点index = (label_bank==i)plt.scatter(output[index, 0], output[index, 1],s=5, cmap=plt.cm.Spectral)plt.legend(["0", "1", "2", "3", "4", "5", "6","7", "8", "9"])plt.show()
CIFAR10 T-SNE 绘制特征空间图相关推荐
- Matplotlib绘制象限图——支持中文、箭头、自定义轴线交点
Matplotlib绘制象限图--支持中文.箭头.自定义轴线交点 1. 效果图 2. 原理 2.1 绘制象限图步骤 2.1 添加文字到图表 3. 源码 参考 这篇博客将介绍如何使用matplotlib ...
- nyquist图怎么画matlab,用MATLAB绘制Nyquist图
<用MATLAB绘制Nyquist图>由会员分享,可在线阅读,更多相关<用MATLAB绘制Nyquist图(9页珍藏版)>请在人人文库网上搜索. 1.用MATLAB绘制Nyqu ...
- Python生物信息学⑥绘制热图及火山图
Python生物信息学⑥绘制热图及火山图 Python生物信息学③提取差异基因 通过上Python生物信息学③提取差异基因得到了该数据集的差异分析的两个关键参数,1.差异倍数(foldchange)以 ...
- sangerbox平台使用(三)绘制火山图
目前绘制火山图有很多工具,我们最常用的就是R语言,本次想向大家介绍的是一个在线工具直接绘制火山图-sangerbox 官方链接为:http://sangerbox.com/AllTools?tool_ ...
- ComplexHeatmap绘制热图(一)
讲起热图,大家都会比较熟悉,绘制热图方式比较多,这里介绍的是ComplexHeatmap包绘制热图,首先配置数据,这里的自动生成一个10X10的矩阵 data=matrix(rnorm(100),nr ...
- R EnhancedVolcano 绘制火山图
火山图是用于差异表达分析结果可视化的一种有效方法.今天,我们来介绍一个用于增强火山图绘制的强大 R 包:EnhancedVolcano ,该包拥有强大的绘图功能,用户可以简单的通过设置颜色.形状.大小 ...
- R语言绘制Vonoroi图
deldir包绘制Voronoi图 #install.packages("deldir") library(deldir)# data set.seed(1) x <- ru ...
- R语言使用ggplot2包使用geom_density()函数绘制密度图(连续色彩、离散色彩、梯度色彩)实战(density plot)
R语言使用ggplot2包使用geom_density()函数绘制密度图(连续色彩.离散色彩.梯度色彩)实战(density plot) 目录 R语言使用ggplot2包使用geom_density( ...
- R语言使用ggplot2包的快速可视化函数qplot绘制密度图(主题、轴标签设置)实战
R语言使用ggplot2包的快速可视化函数qplot绘制密度图(主题.轴标签设置)实战 目录 R语言使用ggplot2包的快速可视化函数qplot绘制密度图(主题.轴标签设置)实战 #仿真数据
最新文章
- Expectation Maximization-EM(期望最大化)-算法以及源码
- QT与openCV,与PCL结合!
- xcode 快捷_您必须知道的Xcode快捷方式
- 17_购物车删除商品与清空购物车
- [2018.04.29 T1] 图
- UML的简单介绍和画法
- ae运动模糊插件安装教程_AEPR运动模糊插件(RSMB) REVisionFX ReelSmart Motion Blur Pro v4.2.3...
- 电视制式 NTSC PAL SECAM
- 16进制转10进制c 语言算法,16进制转换算成10进制程序
- 搜狗输入法取消英文空格确认
- 《东周列国志》第六十四回 曲沃城栾盈灭族 且于门杞梁死战
- 年包150万的腾讯程序员,深圳房产一千万,同学聚会只能排名第16!
- flutter 华为审核:你的应用存在隐藏最近任务列表中应用名称的问题,不符合华为应用市场审核标准
- 初中英语语法(005)-时态
- 【C】指针的相关运算练习题
- 电机专用MCU芯片LCM32F037系列内容介绍
- PyCharm + PySide2/PySide6 外部工具配置
- vscode代码格式化、vetur代码格式化取消末尾添加逗号
- 技术干货 | 网易云信大规模聊天室系统架构解析
- notebook pip install 只有星号_世界上最小的船,只有四个红细胞那么长