python可视化高纬度特征

news2024/11/30 8:56:53

可视化网络的特征层,假如resnet网络输出的特征维度是(batch_size,512). 如果要可视化测试集的每个图片的512高维度特征分布呢?

embeds = resnet18(x),embeds是(batch_size,512)高维度特征。如下可视化。

import torch
import matplotlib.pyplot as plt
from sklearn.manifold import TSNE
from sklearn.utils import shuffle


def plot_tsne(labels, embeds, filename):
    """
    可视化特征分布
    embeds: (image_num,512). torch.float32
    labels: (image_num,). torch.bool。控制绘制类别颜色,如果只是绘制特征的空间分布位置,则不要label
    """
    # 初始化t-SNE模型
    """
    n_components: 指定降维后的维度数量
    verbose: 控制算法运行时输出的信息量。设置为1时,会打印出算法的迭代过程等信息;设置为0则不会打印任何信息。
    perplexity: 这个参数可以被看作是每个点的有效邻域大小。它平衡了局部和全局结构的权重。较小的值会使t-SNE更关注局部结构,
    而较大的值则更倾向于保留全局结构。通常在5到50之间选择一个合适的值,但这个最佳值可能依赖于数据集的具体情况。
    n_iter: t-SNE算法的迭代次数。更多的迭代次数可能会导致更好的结果,但也会增加计算时间。通常,推荐至少设置250次以上的迭代以获得可靠的结果。
    """
    tsne = TSNE(n_components=2, verbose=1, perplexity=30, n_iter=500)
    # 打乱嵌入向量和标签
    embeds, labels = shuffle(embeds, labels)
    # 将(image_num,512)降为到(image_num,2)
    tsne_results = tsne.fit_transform(embeds)

    # 创建图形
    fig, ax = plt.subplots(1)
    colormap = ["b", "r", "c", "y"]  # 传入label的意义就是绘制时,label为1,则绘制点为红色,为0则是蓝色。

    # 绘制散点图
    ax.scatter(x=tsne_results[:, 0], y=tsne_results[:, 1], color=[colormap[l] for l in labels])
    fig.savefig(filename)
    plt.close()


# get embeddings for test data 可视化整个测试集的所有图片
labels = torch.cat(labels)  # (image_num,)
embeds = torch.cat(embeds)  # 特征层(image_num,512)

# norm embeds 测试集
# p: 范数的类型。p=2 表示使用L2范数(欧几里得范数)。其他常见的选项包括 p=1(L1范数)和 p=float('inf')(无穷范数)。
# dim: 指定归一化的维度。
embeds = torch.nn.functional.normalize(embeds, p=2, dim=1)  # (test_image_num,512)

# plot tsne
plot_tsne(labels, embeds, "tsne.png")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2250333.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OceanBase 大数据量导入(obloader)

现需要将源数据库(Oracle|MySQL等)一些表的海量数据迁移到目标数据库 OceanBase 中,基于常规 jdbc 驱动编码的方式涉及开发工作,性能效率也要看编码的处理机制。 OceanBase 官方提供了的 OceanBase Migration Service (OMS) 数据…

Mac启动服务慢问题解决,InetAddress.getLocalHost().getHostAddress()慢问题。

项目启动5分钟,很明显有问题。像网上其他的提高jvm参数就不说了,应该不是这个问题,也就快一点。 首先找到自己的电脑名称(用命令行也行,只要能找到自己电脑名称就行,这里直接在共享里看)。 复制…

Ubuntu交叉编译 opencv for QNX

前言 在高通板子上开发一些程序的时候,会用到opencv帮助处理一下图像数据,高通车载板子sa8155和sm8295都有QNX os,需要交叉编译opencv的库,(这个交叉编译真是搞得我太恶心了,所以进行一个记录和分享) 搜了很多资料,有些太过于复杂,有些也存在错误导致最后没有编译成…

.NET 9 AOT的突破 - 支持老旧Win7与XP环境

引言 随着技术的不断进步,微软的.NET 框架在每次迭代中都带来了令人惊喜的新特性。在.NET 9 版本中,一个特别引人注目的亮点是 AOT( Ahead-of-Time)支持,它允许开发人员将应用程序在编译阶段就优化为能够在老旧的 Win…

Mac 环境下类Xshell 的客户端介绍

在 Mac 环境下,类似于 Windows 环境中 Xshell 用于访问 Linux 服务器的工具主要有以下几种: SecureCRT: 官网地址:https://www.vandyke.com/products/securecrt/介绍:支持多种协议,如 SSH1、SSH2、Telnet 等…

Cookie跨域

跨域:跨域名(IP) 跨域的目的是共享Cookie。 session操作http协议,每次既要request,也要response,cookie在创建的时候会产生一个字符串然后随着response返回。 全网站的各个页面都会带着登陆的时候的cookie …

虚拟机CentOS系统通过Docker部署RSSHub并映射到主机

公告 📌更新公告 20241124-该文章已同步更新到作者的个人博客(链接:虚拟机CentOS系统通过Docker部署RSSHub并映射到主机) 一、编辑 YUM 配置文件 1、打开 CentOS 系统中的 YUM 软件仓库配置文件 vim /etc/yum.repos.d/CentOS-Ba…

DreamCamera2相机预览变形的处理

最近遇到一个问题,相机更换了摄像头后,发现人像角度顺时针旋转了90度,待人像角度正常后,发现 预览时图像有挤压变形,最终解决。在此记录 一人像角度的修改 先放示意图 设备预览人像角度如图1所示,顺时针旋…

Taro React小程序开发框架 总结

目录 一、安装 二、目录结构 三、创建一个自定义页面 四、路由 1、API 2、传参 3、获取路由参数 4、设置TabBar 五、组件 六、API Taro非常好用的小程序框架,React开发者无缝衔接上。 一、安装 官方文档:Taro 文档 注意,项目创建…

RPA:电商订单处理自动化

哈喽,大家好,我是若木,最近闲暇时间较多,于是便跟着教程做了一个及RPA,谈到这个,可能很多人并不是很了解,但是实际上,这玩意却遍布文末生活的边边角角。话不多说,我直接上…

通过金蝶云星空实现高效仓储管理

金蝶云星空数据集成到旺店通WMS的技术案例分享 在企业日常运营中,库存管理和物流调度是至关重要的环节。为了实现高效的数据流转和业务协同,我们采用了轻易云数据集成平台,将金蝶云星空的数据无缝对接到旺店通WMS。本次案例聚焦于“调拨入库…

go结构体匿名“继承“方法冲突时继承优先顺序

在 Go 语言中,匿名字段(也称为嵌入字段)可以用来实现继承的效果。当你在一个结构体中匿名嵌入另一个结构体时,嵌入结构体的方法会被提升到外部结构体中。这意味着你可以直接通过外部结构体调用嵌入结构体的方法。 如果多个嵌入结…

丹摩|丹摩智算平台使用教学指南

本指南旨在为新用户提供一个详细的操作步骤和实用的入门指导,帮助大家快速上手丹摩智算平台。 一、平台简介 丹摩智算平台是一款强大的数据分析和计算平台,支持多种编程语言,提供丰富的数据处理和机器学习工具。无论您是数据分析师、开发者…

从网桥到交换机:技术演变与应用场景

交换机和网桥是网络基础设施中不可或缺的设备,它们都用于提升网络性能和连接网络节点。然而,两者在设计目的、功能范围和适用场景上存在诸多不同之处。本文将从功能、差异和相互关系的角度,探讨交换机与网桥在网络中的角色。 交换机的功能与特…

ollama部署bge-m3,并实现与dify平台对接

概述 这几天为了写技术博客,各种组件可谓是装了卸,卸了装,只想复现一些东西,确保你们看到的东西都是可以复现的。 (看在我这么认真的份上,求个关注啊,拜托各位观众老爷了。) 这不,为了实验在windows上docker里运行pytorch,把docker重装了。 dify也得重装: Dify基…

《String类》

目录 一、定义与概述 二、创建字符串对象 2.1 直接赋值 2.2 使用构造函数 三、字符串的不可变性 四、常用方法 4.1 String对象的比较 4.1.1 比较是否引用同一个对象 4.1.2 boolean equals(Object anObject)方法:按照字典序比较 4.1.3 int compareTo(Strin…

渗透测试笔记—Windows基础和病毒制作

声明: 学习视频来自B站up主 【泷羽sec】有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&am…

编辑Word文档时手滑没点保存怎么办

今天帮人打了份报告,关掉的时候手滑点错了地方没保存。当然我找回来了,也许会有人不知道怎么找回来,记录在这里供人参考。 一、通过“信息”页面的“管理版本”命令组的“恢复未保存的文档”命令调出未保存的文档 二、在调出的打开文件对话框…

【娱乐项目】基于cnchar库与JavaScript的汉字查询工具

Demo介绍 利用了 cnchar 库来进行汉字相关的信息查询,并展示了汉字的拼音、笔画数、笔画顺序、笔画动画等信息用户输入一个汉字后,点击查询按钮,页面会展示该汉字的拼音、笔画数、笔画顺序,并绘制相应的笔画动画和测试图案 cnchar…

vsftpd 的安装和应用(超详细!!!)

FTP(File Transfer Protocol,文件传输协议)是一种用于在计算机网络上进行文件传输的标准协议。它允许用户从一台计算机向另一台计算机上传或下载文件。FTP的工作原理涉及到客户端和服务器之间的交互,以及数据传输的过程。 一、FT…