mindspore.dataset的map问题

news2024/11/15 23:30:35

1、创建一个包含transform的自定义类并实例化

2. 类的实现如下:

请注意:在call函数中,我并没有调用init中定义的transform操作。

3. ImageFolder_forPretrain的定义如下。

在划红线的那行,出现错误。

错误信息:

疑问:为啥我 DataAugmentationForBEiT_my中的`call`都没调用init中的函数,为啥出现了 `ToTensor`的传参错误?

先看这个会报错的示例

class ImageFolder_forPretrain:
    def __new__(cls):
        dataset = ds.ImageFolderDataset(DATA_DIR)
        transform_to_add = [p_vision.Decode(), p_vision.ToPIL()]
        dataset = dataset.map(transform_to_add, input_columns=["image"])
        return dataset

def test_imagefolder_basic():
    dataset = ImageFolder_forPretrain()

    for item in dataset.create_dict_iterator(output_numpy=True, num_epochs=1):  # each data is a dictionary
        logger.warning("image is {}".format(item["image"].shape))
        logger.info("label is {}".format(item["label"]))

报错信息为:

这个错误跟您描述的一致。

经过日志的进一步排查信息,是因为MindSpore数据处理侧在c++与python交互的数据格式当前只能为Numpy。

那么我们看一下这个,transform_to_add = [v_transforms.Decode(), v_transforms.ToPIL()]。如果我没猜错的话,v_transforms应该是来源于 import mindspore.dataset.vision.py_transforms as v_transforms。

所以,数据集经过此步处理

transform_to_add = [v_transforms.Decode(), v_transforms.ToPIL()]
dataset = dataset.map(transform_to_add, input_columns=["image"])

得到的数据类型为 PIL.Image。这样的话,会跟上述 在c++与python交互的数据格式当前只能为Numpy 的机制相悖。从而导致了这个错误。因此,对于校正这个用例,可以这么写

class ImageFolder_forPretrain:
    def __new__(cls):
        dataset = ds.ImageFolderDataset(DATA_DIR)
        transform_to_add = [v_transforms.Decode(), v_transforms.ToPIL(), lambda x:np.array(x)]
        dataset = dataset.map(transform_to_add, input_columns=["image"])
        return dataset

def test_imagefolder_basic():
    dataset = ImageFolder_forPretrain()

    for item in dataset.create_dict_iterator(output_numpy=True, num_epochs=1):  # each data is a dictionary
        logger.warning("image is {}".format(item["image"].shape))
        logger.info("label is {}".format(item["label"]))

可以看到,在map的最后一个算子,使用了一个lambda函数强制转换为numpy,这样的话数据集可以正常迭代了

 

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

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

相关文章

【Spark】spark-submit作业提交及参数设定

note 文章目录note一、Spark的常用启动方式1.1 local本地模式1.2 Standalone模式1.3 Spark on Yarn模式二、spark-submit 详细参数说明--master--deploy-mode--class--name--jars--packages--exclude-packages--repositories--py-files--files--conf PROPVALUE--properties-fil…

【趣学算法】Day3 贪心算法——背包问题

14天阅读挑战赛努力是为了不平庸~ 算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法! ❤️一名热爱Java的大一学生,希望与各位大佬共同学习进步❤️ 🧑个人主页:周小末天天开心 各位大…

tomcat应用部署

目录 tomcta介绍 tomcat安装 每个目录的作用 端口 实验开始 安装,启动MySQL 创建数据库 更改数据库连接 项目导入tomcat和数据库查看 重启tomcat 访问应用 【注意】 tomcta介绍 Tomcat的是完全开源的 Tomcat的是免费的 Tomcat不支持EJB 应用范围&#xff1…

创造一个表格编辑距离指标

这个是我自研的, 与百度PaddleOCR的方式略有不同。 数据的格式: 相当于一个目标检测有两类,分别是table和cell。 在预测值和标签中要先把根据位置关系所有的cell划分到不同的table中。 另外cell标签中还有起止位置 比如 四个数字代表行和…

window10远程桌面控制Ubuntu系统

Windows操作系统作为全球使用最多的个人操作系统,在我们身边随处可见,但放眼各类电子设备的操作系统,windows并不是一家独大,服务器系统大多基于Linux系统开发、手机操作系统几乎都是安卓、更不用说还有苹果的iOS、树莓派、Ubuntu…

【MySQL高级篇】数据库到底是什么?一文带你快速上手MySQL

在学习JavaWeb过程中,数据库学习是不可或缺的。整个JavaWeb体系中,数据库部分用于储存和管理数据,而数据作为网页中非常重要的一部分,自然我们是有必要深入学习数据库的。 推荐学习专栏:Java编程 进阶之路 文章目录1. …

【C语言 数据结构】顺序表的使用

本文借鉴点击跳转 上一篇:线性表的简绍 文章目录顺序表什么是顺序表顺序表的初始化顺序表插入元素顺序表删除元素顺序表 什么是顺序表 顺序表又称顺序存储结构,是线性表的一种,专门存储逻辑关系为“一对一”的数据。 顺序表存储数据的具体…

Linux~一些基本开发工具的使用(yum,vim,gcc,gdb,makefile)

目录 一.yum——安装软件 二.Vim——文本编辑器 (1).命令模式 (2).底行模式 (3).插入模式 tips:给对应用户配置sudo命令 一些注意事项 三.gcc/g——编译器 (1).gcc如何完成…

客快物流大数据项目(八十三):Kudu的优化

文章目录 Kudu的优化 一、​​​​​​​Kudu关键配置 二、​​​​​​​​​​​​​​Kudu的使用限制 1、​​​​​​​​​​​​​​主键 2、Cells 3、​​​​​​​字段 4、表 5、其他限制 6、​​​​​​​​​​​​​​分区限制 7、扩展建议和限制 8、​…

2- 创建Spring项目—— 方式1

导包: 地址:https://repo.spring.io/ui/native/libs-release-local/org/springframework/spring/ 如:包名:spring-5.2.3.RELEASE-dist.zip 将其下libs文件夹下的4个jar包导入: spring-context-5.2.3.RELEASE.jar、…

物联网ARM开发-3协议-单总线应用红外遥控

前言:单总线类传感器-红外遥控的实现 目录 一、红外遥控工作原理讲解 1、光的基础知识 2、红外通信 3、红外NEC协议详解 二、红外遥控实例讲解 1、实验目的:按下遥控按键,主机通过红外接收器接收到信号并解码,识别出按键的…

大学生计算机相关专业有什么血泪建议吗?

工作多年后才发现大学期间错过太多!!!给正在攻读CS的你,以下建议: 神级编程网站,堪称程序员的充电站,我给你找好了不能错过_程序员编程指南的博客-CSDN博客_程序员充电网站 大的课程很多&…

LA-PEG-NH2,Lipoic acid-PEG-Amine,硫辛酸PEG氨基用于量子点表面

表面反应性聚乙二醇聚乙二醇化试剂LA-PEG-NH2,又名Lipoic acid-PEG-Amine其中文名为硫辛酸-聚乙二醇-氨基。所属分类为Amine PEG Lipoic acid(LA)PEG。 该科研试剂Lipoic acid-PEG-Amine的分子量均可定制有:(5000、20…

uboot移植一一更换控制台串口

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 1、场景需求 X210开发板的SOC中一共有4个串口(串口0~3),并且用DB9接口引出了2个串口,分别是串口0和串口2。其中靠近网口的是串口0,远离网口…

java毕业设计——基于java+java-swing的泡泡堂网络游戏设计与实现(毕业论文+程序源码)——泡泡堂网络游戏

基于javajava-swing的泡泡堂网络游戏设计与实现(毕业论文程序源码) 大家好,今天给大家介绍基于javajava-swing的泡泡堂网络游戏设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。 文章目录: 基于javajava-…

多旋翼无人机仿真 rotors_simulator:基于PID控制器的位置控制---高度控制

多旋翼无人机仿真 rotors_simulator:基于PID控制器的位置控制---高度控制前言构建软件框架编译 cpp构建代码main函数构建构建类的定义订阅无人机里程计信息垂直位置控制串级P控制收敛结果收敛过程串级PID控制前言 无人机(Unmanned Aerial Vehicle&#…

Oracle中分割字符串的方法

Oracle中分割字符串的方法1. 使用 regexp_substr() 函数1.1 方式11.2 方式22. 自定义函数2.1 自定义类型 table2.2 自定义函数2.2.1 自定义函数2.2.2 效果如下:2.3 Oracle查看<Collection> 类型数据3.1. 使用 regexp_substr() 函数 1.1 方式…

日志三个时间,动静态库的建立与使用

文章目录日志时间ModifyChangeAccessmake与g库lddfile静态库动态库静态库静态的制作静态库的使用动态库动态库的制作动态库的使用日志时间 Modify 最近修改文件内容的时间在一定条件下,修改文件内容时,可能修改文件属性:文件大小属性改变了 …

实验2:Numpy手写多层神经网络

引言 这个作业的目的是给你们介绍建立,训练和测试神经系统网络模型。您不仅将接触到使用Python包构建神经系统网络从无到有,还有数学方面的反向传播和梯度下降。但在实际情况下,你不一定要实现神经网络从零开始(你们将在以后的实验和作…

【数据结构与算法】详解快排

目录一、快排的定义及思路二、快排的代码实现一、快排的定义及思路 快排就是快速排序,是通过不断比较和移动交换来进行排序,相当于冒泡排序的一种升级。 其基本思想是: 分而治之,也就是把一组数组分成两个独立数组,再对…