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

数据集 Dataset

介绍

之前说过,MindSpore是基于Pipeline,通过Dataset和Transformer进行数据处理。Dataset在其中是用来加载原始数据的。mindSpore提供了数据集加载接口,可以加载文本、图像、音频等,同时也可以自定义加载接口。此外还提供了预加载的数据集,可直接使用。

环境配置

import numpy as np
from mindspore.dataset import vision
from mindspore.dataset import MnistDataset, GeneratorDataset
import matplotlib.pyplot as plt

加载dataset

依然使用之前的图片及其标签数据集Mnist

train_dataset = MnistDataset("MNIST_Data/train", shuffle=False)

数据集迭代

数据集加载后,一般使用迭代的方式获取数据,再送入神经网络中训练。
访问的数据类型默认为Tensor,可以设置为Numpy output_numpy=True

def visualize(dataset):figure = plt.figure(figsize=(4, 4))cols, rows = 3, 3plt.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:breakplt.show()

常用操作

数据集操作采用了异步的执行方式(多亏了pipeline)。具体的表现是,执行操作后会先返回新的dataset,当前未执行具体的操练做,而是在pipeline中加入节点,迭代时才执行整个pipeline。

shuffle

shuffle意思是洗牌,可以改善数据分布不均的问题。

train_dataset = train_dataset.shuffle(buffer_size=64)

map

map实际上不是一个具体的操作,而是对数据集的每一个元素执行指定的数据变换(transformer)并返回这个数据集。变换可能包括简单的数据清洗函数(如删除空值)、更复杂的特征工程函数(如对数变换或独热编码),甚至是深度学习模型进行数据增强的函数。

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

这里对数据进行了归一化,即缩放到除以255之后变为0-1之间。
归一化之前数据类型是uInt8,除以255后自然的产生了小数,变成了float32

batch

这个操作将数据集打包成了固定大小。实际上就是把数据切成了指定大小的小块。搞成batch之后,可以每次只用加载一小部分到内存中。这解决了大规模数据集无法一次性加载到内存中的问题。

train_dataset = train_dataset.batch(batch_size=32)

经过batch操作之后的dataset会增加一个维度,标记了这个数据的batch_size。

自定义数据集

对于没有预加载和不能使用api加载的数据集,可构造自定义数据加载类或自定义数据集生成函数的方式来生成数据集。再通过GeneratorDataset接口实现自定义方式的数据集加载。这个接口支持通过以下三种方式构造自定义数据集。

可随机访问数据集

实现了__getitem__和__len__方法,可以通过索引或键直接访问相应的数据。

class RandomAccessDataset:
# 初始化data和label为(5,2)形状的1和(5,1)形状的0def __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)# RAD作为loader,加载进GeneratorDataset的source,并指定列名
loader = RandomAccessDataset()
dataset = GeneratorDataset(source=loader, column_names=["data", "label"])# 同时source也支持list和tuple
loader = [np.array(0), np.array(1), np.array(2)]
dataset = GeneratorDataset(source=loader, column_names=["data"])

可迭代数据集

实现了__iter__和__next__方法,可以通过迭代的方式逐步获取数据。

class IterableDataset():def __init__(self, start, end):# 初始化开始和结束数字,用在了后面的_iter_方法中 self.start = startself.end = enddef __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"])
# 这个dataset的输出就是【1,2,3,4】

生成器

可迭代,直接依赖Python的生成器类型generator返回数据,直至生成器抛出StopIteration异常。

# 经典的使用yield实现生成器
def my_generator(start, end):for i in range(start, end):yield i
dataset = GeneratorDataset(source=lambda: my_generator(3, 6), column_names=["data"])
# dataset的内容是3,4,5

总结

这节学了一些dataset的加载、操作、以及自定义数据集。

打卡凭证

在这里插入图片描述

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

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

相关文章

【UE开发】游戏库存UI系统Demo

1.项目介绍 1.描述:一种用于存储记录玩家物品的游戏内可视化操作系统。 2.演示:https://www.bilibili.com/video/BV1f53neVEfW/?vd_source50dea901fd12253f417c48b937975b0d 3.大纲: 4.样式: 2.W_Inventory_Main_01(…

CORE Mobility Errorr的调试

在运行CORE tutorial 3中的mobility示例时,出现如下错误: 当看到这个问题的时候,并没有仔细去分析日志和现象,在core-daemon的进程打印界面只看了一下最后的出错堆栈: 2024-06-27 10:43:48,614 - ERROR - _server:_ca…

MySQL8 新特性——公用表表达式用法 with t1 as (select * from user)

MySQL8 新特性——公用表表达式用法_mysql ctes-CSDN博客 1.普通公用表表达式 MySQL8 新特性——公用表表达式用法 在MySQL 8.0及更高版本中,引入了公用表表达式(Common Table Expressions,CTEs),它是一种方便且可重…

docker部署vue项目

1.下载docker desktop软件 Docker Desktop启动的时候,有可能弹框提示"WSL2 installations is incomplete",这是您的系统中没有安装WSL2内核的原因,打开【https://aka.ms/wsl2kernel ,在打开的页面中有一个Linux内核更新包"链…

【python011】经纬度点位可视化html生成(有效方案)

1.熟悉、梳理、总结项目研发实战中的Python开发日常使用中的问题、知识点等,如获取省市等边界区域经纬度进行可视化,从而辅助判断、决策。 2.欢迎点赞、关注、批评、指正,互三走起来,小手动起来! 3.欢迎点赞、关注、批…

STM32将外部SDRAM空间作为系统堆(Heap)空间

概述 stm32可以外扩很大的sram,常见外部sram的初始化函数一般是c语言写的,默认写在main函数里面。stm32初始化首先进入汇编代码startup_stm32f429xx.s,在汇编代码中Reset_Handler(复位中断服务程序)里面先调用了Syste…

vue + Lodop 制作可视化设计页面 实现打印设计功能(二)

历史: vue2 Lodop 制作可视化设计页面 实现打印设计功能(一) 前言: 之前本来打算用直接拿之前做的vue2版本改改就发的,但考虑到现在主流都是vue3了,所以从这篇文章开始使用vue3来写,以及最后…

三相LCL滤波型PWM逆变器仿真设计

参考并网电流外环电容电流前馈内环的双闭环控制结构,在光伏和风力发电网侧变换器中的应用,可以显著提高系统的稳定性和效率。在并网电流外环中,通过检测电网电流并与其参考值进行比较,可以得到一个电流误差信号。这个电流误差信号…

MySQL基础查询与复杂查询

基础查询 1、查询用户信息,仅显示用户的姓名与手机号,用中文显示列名。中文显示姓名列与手机号列。 2、根据商品名称进行模糊查询,模糊查询需要可以走索引,需要给出explain语句。使用explain测试给出的查询语句,需要显…

程序员职业发展指南,如何选择适合自己的就业方向?

随着科技的发展和数字化时代的到来,程序员是IT行业中的热门职业。尤其是近几年移动互联网的迅速发展,IT人才更是紧缺,越来越多的人加入程序员这个行列。 从事程序员工作,如何接项目呢?YesPMP是一个专注于互联网外包的平…

【知识学习】阐述Unity3D中动画渲染的概念及使用方法示例

Unity3D中的卡通渲染(Cartoon Rendering)是一种渲染技术,它模仿传统手绘动画或漫画的视觉效果。这种渲染风格通常具有鲜明的颜色、清晰的轮廓线和简化的光影效果,常用于制作动画、游戏和其他视觉媒体。 卡通渲染的基本概念 轮廓…

<sa8650>QCX ISP Tuning 使用详解 — Tuning前置条件

<sa8650>QCX ISP Tuning 使用详解 — Tuning前置条件 一 如何安装 Qualcomm Chromatix™ 摄像头校准工具二 如何使用 Qualcomm Chromatix™ tuning工具创建tuning项目2.1 创建工程前提依赖2.2 创建工程2.3 添加场景2.4 编辑区域触发器三 如何创建Tuning 树一 如何安装 Qualco…

postman教程-22-Newman结合Jenkins执行自动化测试

上一小节我们学习了Postman Newman运行集合生成测试报告的方法,本小节我们讲解一下Postman Newman结合Jenkins执行自动化测试的方法。 在软件开发过程中,持续集成(CI)是一种实践,旨在通过自动化的测试和构建过程来频繁…

【高等数学】一元函数积分及其应用:定积分与反常积分

文章目录 第一节. 定积分一. 定积分的概念1. 定义2. 定积分存在定理3. 定积分的几何意义与求解 二. 定积分的性质1. 不等式2. 中值定理 三. 积分上限(为x)函数1. 积分上限函数定义2. 积分函数求导3. 积分函数的奇偶性变化 四. 定积分的计算 第二节. 反常…

vue的ESLint 4格缩进 笔记

https://chatgpt.com/share/738c8560-5271-45c4-9de0-511fad862109 一,代码4格缩进设置 .eslintrc.js文件 module.exports { "rules": { "indent": ["error", 4] } }; 自动修复命令 npx eslint --fix "src/**/*.{…

作为图形渲染API,OpenGL和Direct3D的全方位对比。

当你在网页看到很多美轮美奂的图形效果,3D交互效果,你知道是如何实现的吗?当然是借助图形渲染API了,说起这个不就不得说两大阵营,OpenGL和Direct3D,贝格前端工场在本文对二者做个详细对比。 一、什么是图形…

springboot实习管理系统的设计与实现 LW +PPT+源码+讲解

第三章系统分析与设计 3.1 可行性分析 一个完整的系统,可行性分析是必须要有的,因为他关系到系统生存问题,对开发的意义进行分析,能否通过本系统来补充线下实习管理模式中的缺陷,去解决其中的不足等,通过对…

专业技术!最新氧化物异质结纳米制备技术

网盘 https://pan.baidu.com/s/1vjO2yLxm638YpnqDQmX7-g?pwd3at5 MOF衍生的B_A_B结构氧化物异质结及其制备方法和应用.pdf 二硫化钼-硫化镉纳米复合材料及其制备方法和应用.pdf 具有异质界面的耐辐照复合薄膜及其制备方法与应用.pdf 基于异质结双界面层纳米材料的复合介电薄膜…

【软考论文】项目背景及论文模版

目录 一、项目核心功能二、论文模板一、项目核心功能 二、论文模板 论文字数说明 总字数 2500 = 500 + 400 +400 * 3 + 300 背景:500 回答问题:400 三段论:1200 = 400 * 3 结论:300 ~ 400 摘要(<300字) 本人于2022年1月参与了某车厂的全渠道数字化精准营销平台项目,该…

Spring Boot中实现定时任务最常用的方法 @Scheduled 注解和 TaskScheduler 接口【包含详情代码】

Spring Boot中实现定时任务最常用的方法 Scheduled 注解和 TaskScheduler 接口【包含详情代码】 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把手教你开发炫酷的vbs脚本制作(完善中………