前言
本文通过PyTorch提供的预训练Resnet50提取CIFAR-10表征,并使用t-SNE进行可视化。
加载预训练Resnet50
import torch
from torchvision.models import resnet50, ResNet50_Weights
# 加载ResNet模型
resnet = resnet50(weights=ResNet50_Weights.DEFAULT)
# 移除最后一层全连接层
resnet_fe = torch.nn.Sequential(*(list(resnet.children())[:-1]))
resnet_fe.cuda()
resnet_fe.eval()
加载CIFAR-10数据集
from torchvision.datasets import CIFAR10
from torchvision import transforms
transformer = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010)),
])
dataset = CIFAR10(root='./data', train=True, download=True, transform=transformer)
提取CIFAR-10表征
from torch.utils.data import DataLoader
dataloader = DataLoader(dataset, batch_size=64, shuffle=True)
features = []
labels = []
for i, (x, y) in enumerate(dataloader):
x = x.cuda()
with torch.no_grad():
feature = resnet_fe(x) # feature shape: (batch_size, 512, 1, 1)
feature = feature.view(feature.size(0), -1).cpu() # feature shape: (batch_size, 512)
for f,l in zip(feature,y):
features.append(f.numpy())
labels.append(l.numpy())
训练t-SNE
from sklearn.manifold import TSNE
import numpy as np
features = np.array(features)
labels = np.array(labels)
tsne = TSNE(n_components=2, random_state=0).fit_transform(X=features)
可视化
import altair as alt
import pandas as pd
# 提取 x 和 y 坐标
k = 5000 # 否则会报错:MaxRowsError: The number of rows in your dataset is greater than the maximum allowed (5000).
label = labels[:k]
x = tsne[:k, 0]
y = tsne[:k:, 1]
# 创建 DataFrame
df = pd.DataFrame({'x': x, 'y': y, 'label': label})
# 创建散点图
chart = alt.Chart(df).mark_point(filled=True).encode(x="x", y="y", color="label:N").properties(width=400, height=400)
chart = chart.configure_axis(
disable=True, # 禁用坐标轴
)
chart
运行环境
# Name Version Build Channel
altair 5.0.1 py312haa95532_0
jupyter 1.0.0 py312haa95532_9
pandas 2.2.1 py312h0158946_0
pytorch 2.2.2 py3.12_cuda12.1_cudnn8_0 pytorch
scikit-learn 1.3.0 py312hc7c4135_2
有时候,PyCharm 2024.1 (Professional Edition)运行的Jupyter,altair的图显示不出来,可以用浏览器打开.ipynb文件查看。
最后
感谢你们的阅读和喜欢,我收藏了很多技术干货,可以共享给喜欢我文章的朋友们,如果你肯花时间沉下心去学习,它们一定能帮到你。
因为这个行业不同于其他行业,知识体系实在是过于庞大,知识更新也非常快。作为一个普通人,无法全部学完,所以我们在提升技术的时候,首先需要明确一个目标,然后制定好完整的计划,同时找到好的学习方法,这样才能更快的提升自己。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
一、全套AGI大模型学习路线
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
三、AI大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
四、AI大模型商业化落地方案
五、面试资料
我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】