如何创建微调期间嵌入的动画17 Mar 2025 | 4 分钟阅读 ![]() ![]() 该活动有超过 200,000 次展示。许多读者对它的制作方式表示感兴趣,并受到了热烈欢迎。本文旨在帮助那些读者以及任何有兴趣创建类似可视化图的人。 本文的目标是提供一个详细的教程,介绍如何创建此类动画,包括所有必要的流程,例如微调、嵌入生成、异常检测、PCA、Procrustes、审查和动画创建。 准备:微调预训练的 Vision Transformer (ViT) 模型。为此,我们使用 CIFAR-10 数据集,该数据集包含 60,000 张照片,分为十个类别:卡车、青蛙、马、鹿、猫、鸟和汽车。 要完成 CIFAR-10 的微调过程,请遵循 Embracing Face 关于使用 transformer 进行图像分类的说明。我们还使用 TrainerCallback 将训练过程中的损失值记录到 CSV 文件中,供动画使用。 为确保动画有足够的检查点,至关重要的是通过将 save_strategy="step" 和一个较低的 save_step 值设置在 TrainingArguments 中来增加检查点的保存间隔。动画的每一帧都代表一个不同的检查点。在训练期间,为每个检查点创建一个文件夹,并且 CSV 文件也已准备就绪,可供使用。 嵌入创建为了使用不同的模型检查点从 CIFAR-10 数据集的测试集中创建嵌入,我们使用了 Transformers 库的 AutoFeatureExtractor 和 AutoModel 函数。 对于单个模型检查点,每个嵌入代表 10,000 张测试图像中的一张,是一个 768 维的向量。这些嵌入可以保存在与检查点相同的文件夹中,以保持一切井然有序。 提取异常值可以使用 Cleanlab 库的 OutOfDistribution 类根据每个检查点的嵌入来查找异常值。然后可以使用所得分数确定动画的前 10 个异常值。 使用 Procrustes 分析和 PCA我们使用 scikit-learn 包的 Principal Component Analysis (PCA) 在 2D 空间中可视化嵌入,该包将 768 维向量降至 2 维。由于轴翻转或旋转,每次时间步重新计算 PCA 时,动画中可能会出现大的跳跃。我们使用 SciPy 包中的额外 Procrustes 分析 [3] 将每一帧在几何上对齐到前一帧,以解决此问题。此分析仅涉及平移、旋转和统一缩放。这使得动画的过渡更加流畅。 在 Spotlight 中审查在进行最后的润饰之前,我们在 Spotlight 中评估整个动画。此过程的第一个和最后一个检查点用于创建嵌入、执行 PCA 和识别异常值。启动 Spotlight,并加载生成的 DataFrame。 Spotlight 在屏幕的左上角提供了一个包含数据集中所有字段列表的完整表格。右上角是两个 PCA 表示,一个用于使用第一个检查点创建的嵌入,另一个用于最后一个检查点。底部是一个精选图片的展示。 ![]() 创建动画每个检查点都会收到其图像,然后将其与相应的检查点一起保存。 这是通过 make_pca(...) 和 get_ood(...) 函数完成的,这些函数分别生成构成嵌入的 2D 点并提取前 8 个异常值。不同的类别由用于布局 2D 点的颜色表示。根据分数,异常值被组织起来,高分排行榜显示相关异常值的图像。训练损失从 CSV 文件导入并显示为折线图。 之后,可以使用 Imageio 等库将所有图像合并成 GIF。 ![]() ![]() ![]() 结论本文提供了有关如何创建演示 Vision Transformer (ViT) 模型微调过程的动画的全面课程。我们已经涵盖了创建和分析嵌入、可视化结果以及创建集成这些组件的动画的步骤。 创建此类动画是向他人传授这些概念以及帮助他人理解修改 ViT 模型复杂过程的强大方法。 Next Topic如何使用 Python 和 Matplotlib 创建印度数据地图 |
scipy.stats.nbinom() 描述了负二项式离散分布。它是从通用方法继承的 rv_discrete 类的实例。它通过添加特定于此分布的详细信息来完成这些方法。概率质量函数,它给出了负二项式离散分布的总失败次数...
阅读 4 分钟
随机指的是可以以任何顺序获得的数据或信息的集合。Python中的random模块用于生成随机字符串。随机字符串由数字、字符和标点符号系列组成,可以包含任何模式。随机...
5 分钟阅读
PyQt5 是一个功能强大的 Python 库,它允许开发人员轻松创建 paas 平台桌面应用程序。在各种小部件中,QDoubleSpinBox 作为处理浮点数字输入的宝贵工具而脱颖而出。在本文中,我们将讨论 QDoubleSpinBox 的一个重要方面 -...
阅读 4 分钟
Python 是一种区分大小写的编程语言,这意味着该语言将大写和小写字符视为不同。例如,在 Python 中,“x”变量与“X”变量不同。这种行为与某些其他编程语言(如 JavaScript)不同,后者……
阅读 3 分钟
线性可分性是机器学习中的一个重要概念,尤其是在监督学习领域。它指的是使用线性决策边界将一组数据点分离成不同类别的能力。换句话说,如果存在一个直线...
阅读 6 分钟
? 在 Python 中逐行读取文件是许多数据处理和分析工作流程中的常见操作。以下是您可遵循的步骤来逐行读取 Python 文件: 1. 打开文件:打开所需文件是第一步。要...
阅读 4 分钟
Python (x,y) 是一款完全免费使用的工程和科学开发软件。Python (x,y) 软件用于数据分析、数据可视化和数值计算。Python (x,y) 基于 Spyder 交互式科学开发环境、Python 编程语言和 GUI(图形用户界面)...
阅读 4 分钟
有时,我们遇到一个问题,需要使用 Python 编程语言删除每个字符串的第一个字符。这个字符可能是偶然创建的,我们需要为单个字符串或整个列表执行此操作。这种...
阅读 4 分钟
? cbind 函数是实现此目的最简单的方法之一。cbind 方法(column bind 的缩写)是一个融合函数,它将两个行数相同的不同数据帧组合成一个统一的数据帧。它比它稍微困难一点...
阅读 2 分钟
Selenium 是一个用于自动化网络交互和测试网络应用程序的多功能工具。Cookies 在网络开发中扮演着重要的角色,因为它们在客户端存储信息以保持状态和个人偏好。在 Selenium Python 中,delete_cookie 驱动程序方法是一个强大的功能...
阅读 3 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India