mindspore.dataset的map问题

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

mindspore.dataset的map问题

2. 类的实现如下:

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

mindspore.dataset的map问题

3. ImageFolder_forPretrain的定义如下。

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

mindspore.dataset的map问题

错误信息:

mindspore.dataset的map问题

疑问:为啥我 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.dataset的map问题

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

经过日志的进一步排查信息,是因为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,这样的话数据集可以正常迭代了

Original: https://blog.csdn.net/xi_xiyu/article/details/127583994
Author: xi_xiyu
Title: mindspore.dataset的map问题

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/758707/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • scrapy框架爬虫

    一、什么是scrapy? Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数…

    Python 2023年5月24日
    059
  • Phoenix 对 Hbase 中表的映射

    目录 * – 1)表的关系 – 2)Hbase中创建表 test – 3)视图映射 – 4)表映射 – 数字类型说明 1…

    Python 2023年10月10日
    031
  • Python安装库的常用方法

    方法一:需要在网络条件下安装 win+R进入运行框输入命令cmd 点击确定进入 普通下载:pip install模块名字 例如:输入pip install pygame pip i…

    Python 2023年9月20日
    044
  • numpy tofile

    用法:numpy.fromfile(file, dtype=float, count=- 1, sep=”, offset=0, *, like=None)从文本或二进…

    Python 2023年8月24日
    049
  • python入门基础(8)–python中的嵌套

    嵌套:将一系列字典存储在列表中,或将列表作为值存储在字典中,称为嵌套。您可以在列表中嵌套词典,也可以在词典中嵌套列表,甚至可以在词典中嵌套。 [En] Nesting: stori…

    Python 2023年5月24日
    058
  • Kinect 骨骼/人体追踪的python开发环境搭建

    Kinect 骨骼/人体追踪的python开发环境搭建 开发环境:windows10目标设备:Kinect xbox one 安装pycharm 开发环境(略)SDK 下载:htt…

    Python 2023年9月19日
    041
  • python几种矩阵重组降维方式对比

    reshape:更改数组的形状ravel:返回一个展平的数组。flatten:返回一个展平的数组。 #将矩阵降至一维示例 import numpy as np x = np.arr…

    Python 2023年8月25日
    046
  • scrapy环境安装

    抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。 Original: https://blo…

    Python 2023年10月5日
    042
  • 【yolov6系列一】深度解析网络架构

    在yolov5霸屏计算机视觉领域很久时,六月处美团开源了yolov6,并号称在精度和速度上均超越其他同量级的计算机视觉模型,刚刚瞅了一眼,star已经超过2.8k,脑子里莫名冒出一…

    Python 2023年9月28日
    059
  • 自己错题整理

    关于numpy: 创建随机数组时候 np.random.rand(d0,d1…dn) :rand函数根据给定维度生成半开区间[0,1)之间的数据,包含0,不包含1 np…

    Python 2023年8月29日
    038
  • Python基础教程(七)matplotlib–plot介绍

    编程字典Pandas教程 http://codingdict.com/article/8270清华计算机博士带你学-Python金融量化分析 https://www.bilibil…

    Python 2023年9月3日
    045
  • UBOOT 启动流程

    一、概述 uboot 的启动流程在网上有很多大佬记录,但是了对于像我这样的新手就有些困难了,而我也不做 uboot 相关的工作,所以没必去研究代码,这里我特意整理了一下,以流程图的…

    Python 2023年10月13日
    055
  • TensorBoard快速入门(Pytorch使用TensorBoard)

    文章目录 TensorBoard 简介 TensorBoard 界面介绍 TensorBoard 安装 TensorBoard 运行 Pytorch 使用 TensorBoard …

    Python 2023年8月2日
    073
  • [活动预告] Substrate 中的 IBC 跨链模块技术分享 Substrate-ibc

    IBC协议是Cosmos社区设计发明的一套通用链间通信协议,而章鱼网络为Substrate实现了IBC协议模块,将Cosmos生态和Substrate生态结合起来,为Substra…

    Python 2023年11月8日
    031
  • Netty+WebSocket整合STOMP协议

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 弹尽粮绝,会员救园:…

    Python 2023年10月22日
    058
  • np.stack()使用

    1.官网https://numpy.org/doc/stable/reference/generated/numpy.stack.html np.stack(arrays , ax…

    Python 2023年8月28日
    049
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球