昇思25天学习打卡营第04天 | 数据集 Dataset

昇思25天学习打卡营第04天 | 数据集 Dataset

文章目录

  • 昇思25天学习打卡营第04天 | 数据集 Dataset
    • 数据集加载
    • 数据集迭代
    • 数据集的变换
      • shuffle
      • map
      • batch
    • 自定义数据集
      • 可随机访问数据集对象
      • 可迭代数据集
      • 生成器
    • 总结
    • 打卡

数据集Dataset对原始数据进行封装、变换,为神经网络提供高质量的输入数据。
mindspore.dataset内置了的文本、图像、音频等数据集的加载接口,也提供创建自定义数据集的方法。

数据集加载

mindspore.dataset仅支持解压后的数据文件,对于压缩包文件,需要先解压才能创建数据集:

from download import download

url = "https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/" \
      "notebook/datasets/MNIST_Data.zip"
path = download(url, "./", kind="zip", replace=True)					 # 下载并解压到"./"目录下

train_dataset = MnistDataset("MNIST_Data/train", shuffle=False)			# 通过数据集的文件目录直接创建dataset

数据集迭代

数据集可以通过create_tuple_iteratorcreate_dict_iterator接口创建迭代器进行访问。
访问的类型默认为Tensor,如果设置output_numpy=True,则访问Numpy

def visualize(dataset):
    figure = plt.figure(figsize=(4, 4))
    cols, rows = 3, 3

    plt.subplots_adjust(wspace=0.5, hspace=0.5)

    for idx, (image, label) in enumerate(dataset.create_tuple_iterator()):
        figure.add_subplot(rows, cols, idx + 1)
        plt.title(int(label))
        plt.axis("off")
        plt.imshow(image.asnumpy().squeeze(), cmap="gray")
        if idx == cols * rows - 1:
            break
    plt.show()

数据集的变换

shuffle

shuffle可以对数据集进行打乱,消除数据排列不均匀的问题。
op-shuffle
mindspore.dataset可以在加载数据集的时候配置shuffle=True,或者通过mindspore.dataset.shuffle(buffer_size)进行打乱。

map

map是数据预处理的关键,可以针对数据集的指定列添加变换,将指定变换应用于该列数据的每个元素,并返回变换后的新元素。

train_dataset = train_dataset.map(vision.Rescale(1.0 / 255.0, 0), input_columns='image')

batch

将数据集中的数据打包为batch有利于在资源受限的情况下使用梯度下降,可以保证梯度下降的随机性和优化计算量。

train_dataset = train_dataset.batch(batch_size = 32)

通过batch后数据增加一维,大小为batch_size

自定义数据集

通过构造自定义数据加载类和自定义数据集生成函数的方法来生成数据集,并通过GeneratorDataset接口实现数据集的加载
GeneratorDataset支持可随机访问数据集对象可迭代数据集对象生成器构造数据集。

可随机访问数据集对象

是指实现了__getitem____len__方法的数据集,可以通过索引/键直接访问对应位置的数据。

class RandomAccessDataset:
    def __init__(self):
        self._data = np.ones((5, 2))
        self._label = np.zeros((5, 1))

    def __getitem__(self, index):
        return self._data[index], self._label[index]

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

loader = RandomAccessDataset()
dataset = GeneratorDataset(source=loader, column_names=["data", "label"])

可迭代数据集

是指实现了__iter____next__方法的数据集,可以通过迭代的方式获取数据样本,适用于随机访问成本太高或不可行的情况。

class IterableDataset():
    def __init__(self, start, end):
        '''init the class object to hold the data'''
        self.start = start
        self.end = end
    def __next__(self):
        '''iter one data and return'''
        return next(self.data)
    def __iter__(self):
        '''reset the iter'''
        self.data = iter(range(self.start, self.end))
        return self
		
loader = IterableDataset(1, 5)
dataset = GeneratorDataset(source=loader, column_names=["data"])

生成器

生成器属于可迭代的数据集类型,依赖于python的generator返回数据,直到生成器抛出StopIteration异常。

def my_generator(start, end):
    for i in range(start, end):
        yield i

dataset = GeneratorDataset(source=lambda: my_generator(3, 6), column_names=["data"])

总结

通过这一节的学习,对MindSpore中Dataset的使用方法有了一定的了解,掌握了通过download下载/解压数据并创建数据集,通过迭代器方位数据集中的元素,通过shuffle打乱数据,通过map变换数据以及将数据打包为固定大小的patch。此外,还了解了自定义数据集的创建以及自定义数据集需要实现的方法,为之后的训练数据管理和处理打下了基础。

打卡

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

光照老化试验箱在化工产品暴晒测试中的应用

概述 光照老化试验箱是一种模拟自然光照条件下材料老化情况的实验设备,广泛应用于化工、建材、电子、汽车等行业中对材料的耐候性、耐光性能等进行测试。通过模拟日光中的紫外线和温度等环境因素,加速材料老化过程,以此评估材料在长期使用中…

C语言编程-基于单链表实现贪吃蛇游戏

基于单链表实现贪吃蛇游戏 1.定义结构体参数 蛇行走的方向 蛇行走的状态 蛇身节点类 维护蛇的结构体型 2.游戏运行前预备工作 定位光标位置 游戏欢迎界面 绘制游戏地图(边界) 初始化游戏中的蛇身 创建食物 3.游戏运行 下一个位置是食物,就吃掉…

阿里云 SAE 助力修正商城 3 周内提升系统承载能力 20 倍,轻松应对春晚流量

作者:赵世振、刘松伟、朱坪" 从了解阿里云 SAE 到使用 SAE 进行应用架构升级共经历 3 周,这 3 周我们系统能承载的 QPS 从 5000 增强到 10 万,提升 20 倍,轻松应对了春晚大促流量洪波。并且,SAE 还帮助我们降低了…

超详细:安装Linux系统、虚拟现实教程

文章目录 一、如何下载并使用VMware虚拟机1.百度搜索vmware2.进入官网点击Workstation Pro链接3.博通注册对应的账号4.博通填写用户名、密码后直接登录会跳转到博通登录页5.个人使用选择个人版 二、国内镜像网站下载(Centos版本)三、镜像系统的安装1.打开…

PCL小笔记

一、常用概念 1,过滤器Filters 消除噪音 2,特征Features 集合点属性:曲面的曲率估计和查询点的法线 通过k-neighborhood计算得到这两个属性作为特征 查找方法:KD-tress、八叉树等 3,关键点Keypoints 可以利用明确标…

Halcon支持向量机

一 支持向量机 1 支持向量机介绍: 支持向量机(Support Vector Machine,SVM)是Corinna Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别表现出许多特有的优势。 2 支持向量机原理: 在n维空间中找到一个分类超平面…

4.整合第三方技术【整合JUnit】

目录 1.创建项目: 2.导入测试对应的starter 3.添加测试对象 3.1 添加Prodcut接口文件 3.2 添加ProdcutImpl文件 3.3 测试类添加测试文件,并开始测试 4.测试类文件解析 4.1.测试类使用SpringBootTest修饰 4.2使用自动装配的形式添加要测试的对象 1.…

LeetCode 算法:路径总和 III c++

原题链接🔗:路径总和 III 难度:中等⭐️⭐️ 题目 给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始,也不需要在叶…

大模型与机器人精彩碰撞-7月5日晚上八点不见不散!

在瞬息万变的科技时代,新兴人工智能和机器人技术的结合正在引领新一轮的创新浪潮。你是否想成为未来科技的领航者?你是否想了解最前沿的AI与机器人技术?行麦科技重磅推出的“AIGC时代的生存法则”AI系列课,将为你揭开大模型与机器…

数据库操作语言(DML)

数据库操作语言(DML) 文章目录 数据库操作语言(DML)一、四种操作二、数据的插入(增)三、数据的删除(删)四、数据的修改(改)五、数据的查询(查&…

科研与英文学术论文写作指南——于静老师课程

看到了一个特别棒的科研与英文学术论文写作指南,理论框架实例。主讲人是中科院信息工程研究所的于静老师。推荐理由:写论文和读论文或者讲论文是完全不一样的,即使现在还没有发过论文,但是通过于老师的课程,会给后续再…

2024最新Stable Diffusion【插件篇】:SD提示词智能生成插件教程!

前言 今天我们介绍几款可以自动生成提示词的插件。所谓智能生成提示词,就是我们只需要输入非常少量的关键字,插件就会根据关键词提示信息帮助我们生成一系列关键字或者句子作为提示词。下面来和我一起看看吧。 一. SD智能提示词工具 之前的文章中和大…

Java学习 - Redis-Cluster

为什么需要集群 为了高的处理速度 单机redis,官网宣传处理速度为10万命令/秒如果业务需要更高的处理速度,则需要使用集群 为了存储大量数据 一般机器的内存为16-256G如果想要存储更大量的数据,则需要使用集群 分布式之数据分区 因为数据需…

KEYSIGHT是德科技 E5063A ENA 系列网络分析仪

E5063A ENA 矢量网络分析仪 18GHz 2端口 降低无源射频元器件的测试成本 Keysight E5063A ENA 是一款经济适用的台式矢量网络分析仪,可用于测试简单的无源元器件,例如频率最高达到 18 GHz 的天线、滤波器、电缆或连接器。 作为业界闻名的 ENA 系列…

工具:颜色查询 / CMYK颜色查询RGB、HSL、HSV、XYZ的颜色值

一、颜色查询-网址 RGB(90,223,9),#5ADF09 颜色查询,颜色梯度,色彩搭配,色盲模拟 - RGB颜色查询 - 在线工具 - Fontke.com 二、CMYK颜色查询RGB、HSL、HSV、XYZ的颜色值 三、颜色梯度 四、色彩搭配 五、色盲模拟 六、欢迎交流指正

程序员的加油站,各类技术文章,可视化技术,在线源码资源,在线实用工具,数据爬虫接口持续集成更新中

先挂网址:https://wheart.cn 可视化大屏模板与设计,在线预览 上百例可视化模板 技术文章、资源下载等各类资源导航页 echart在线实用demo 各种在线工具提升开发效率 echart在线代码模板

服务器之BIOS基础知识总结

1.BIOS是什么? BIOS全称Basic Input Output System,即基本输入输出系统,是固化在服务器主板的专用ROM上,加载在服务器硬件系统上最基本的运行程序,它位于服务器硬件和OS之间,在服务器启动过程中首先运行&am…

配置Uptime Kuma固定前缀

在做ICT集成项目时,遇到需要对现网接口进行拨测的需求。搜索后尝试使用开源的Uptime Kuma组件完成现网接口拨测。 但该项目有个问题就是默认不支持配置固定前缀,这对现网进行请求转发会造成较大的影响。通过查看该项目的github后找到了问题的解决方案。S…

助力游戏实现应用内运营闭环,融云游戏社交方案升级!

通信能力在所有应用场景都是必备组件,这源于社交属性带给应用的增长神话。 在游戏场景,玩家从少数核心向大众用户泛化扩展的过程,就是游戏深度融合社交能力的过程。 从单机到联机,游戏乐趣的升级 1996 年,游戏界顶流…

Laravel swagger接口文档生成和管理

Laravel swagger接口文档生成和管理 接口开发随着时间推移接口会越来越多,随着多部门之间的协作越来越频繁, 维护成本越来越高, 文档的可维护性越来越差, 需要一个工具来管理这些接口的文档, 并能够充当mock server给调用方使用 这里推荐swagger生成和管理接口文档&…