当前位置: 首页 > article >正文

手撕Vision Transformer -- Day2 -- Dataset

手撕Vision Transformer – Day2 – Dataset

目录

  • 手撕Vision Transformer -- Day2 -- Dataset
    • Vit 网络结构图
    • Dataset代码
      • Part1 库函数
      • Part2 初始化一个数据集的类
      • Part3 测试
    • 参考

Vit 网络结构图

在这里插入图片描述

Vit 网络结构

Dataset代码

Part1 库函数

# 该模块主要是为了嵌入获取相关的数据,得到dataloader等等,只不过把数据集的获取设计成了一个类
import torch
import torchvision
from torchvision import transforms
from torch import nn
# 总是容易忘记这个data的引用
import torch.utils.data as data

Part2 初始化一个数据集的类

class Mnist_dataset(data.Dataset):
    def __init__(self, is_tran):
        super().__init__()
        self.transform_action = transforms.Compose([
            transforms.ToTensor()
        ])
        self.Mnist = torchvision.datasets.MNIST(root='./Mnist_data', train=is_tran, transform=self.transform_action,
                                                download=True)

    def __len__(self):
        return len(self.Mnist)

    def __getitem__(self, index):
        return self.Mnist[index][0], self.Mnist[index][1]  # 返回对应的图像和label

Part3 测试

if __name__ == '__main__':
    import matplotlib.pyplot as plt

    plt.figure(figsize=(45, 45))
    mnist = Mnist_dataset(is_tran=True)
    img, label = mnist[0]
    # 因为Totensor,会把数据进行归一化,并且把pillow(imag_size,imag_size,channel)转化为(channel,imag_size,imag_size)
    # 为了能够画图,需要把channel换回来
    plt.imshow(img.permute(2, 1, 0))
    plt.title(f"Label: {label}")
    plt.show()

参考

视频讲解:【Sora重要技术】复现ViT(Vision Transformer)模型_哔哩哔哩_bilibili

原理参考:手撕Vision Transformer – Day1 – 基础原理-CSDN博客


http://www.kler.cn/a/529084.html

相关文章:

  • 《DeepSeek R1:大模型最简安装秘籍》
  • Redis|前言
  • MySQL 插入数据
  • UE学习日志#18 C++笔记#4 基础复习4 指派初始化器和指针
  • 服务器虚拟化实战:架构、技术与最佳实践
  • 深入理解MySQL 的 索引
  • 02数组+字符串+滑动窗口+前缀和与差分+双指针(D2_字符串(D2_刷题练习))
  • 每日 Java 面试题分享【第 18 天】
  • Java - 引用类型:强引用、软引用、弱引用和虚引用详解
  • java CountDownLatch和CyclicBarrier
  • Spring AOP 入门教程:基础概念与实现
  • ASP.NET Core 启动并提供静态文件
  • 动态规划两个数组dp问题系列一>不相交的线
  • 一文讲解Java中的HashMap
  • 快速提升网站收录:如何设置网站标签?
  • pandas中的apply方法使用
  • 【漫话机器学习系列】074.异方差(Heteroscedasticity)
  • 【Linux】23.进程间通信(2)
  • 局域网文件互传:手机与电脑的便捷传输利器
  • 《Ollama与DeepSeek》
  • 力扣-链表-142 环形链表Ⅱ
  • AI(计算机视觉)自学路线
  • 【模拟汽笛ISIS】2022-9-15
  • BUUCTF [Black Watch 入群题]PWN1 题解
  • JAVA学习-练习试用Java实现“使用Swing创建一个带有按钮的窗口”
  • 一些计算机零碎知识随写(25年2月)