三、mindspore.dataset.Dataset.map介绍

前提概要:本文仅仅用于个人笔记记录,无其他用途(主要我懒,我写完了方便我翻)

        给定一组数据增强列表,按顺序将数据增强作用在数据集对象上。

mindspore.dataset.Dataset.map(operations,input_columns=None,output_columns=None,column_order=None,num_parallel_workers=None,**kwargs)

        每个数据增强操作将数据集对象中的一个或多个数据列作为输入,将数据增强的结果输出为一个或多个数据列。第一个数据增强操作将input_columns中指定的列作为输入。如果数据增强列表中存在多个数据增强操作,则上一个数据增强的输出列将作为下一个数据增强的输入列

        最后一个数据增强的输出列的列名由output_columns指定,如果没有指定output_columns,输出列名与input_columns一致。

参数:

  1. operations(Union[list[TensorOperation], list[functions]]) - 一组数据增强操作,支持数据集增强操作或者用户自定义的Python Callable对象。map操作将按顺序将一组数据增强作用在数据集对象上。
  2. input_columns(Union[str, list[str]], 可选) - 第一个数据增强操作的输入数据列。此列表的长度必须与operations列表中第一个数据增强的预期输入列数相匹配。默认值:None。表示所有数据列都将传递给第一个数据增强操作。
  3. output_columns(Union[str, list[str]], 可选) - 最后一个数据增强操作的输出数据列。如果input_columns长度不等于output_columns长度,则必须指定此参数。列表的长度必须必须与最后一个数据增强的输出列数相匹配。默认值:None,输出列将与输入列具有相同的名称。
  4. num_parallel_workers(int, 可选) - 指定map操作的多进程/多线程并发数,加快处理速度。默认值:None,将使用set_num_parallel_workers设置的并发数。
  5. **kwargs- 其他参数。
    1. python_multiprocessing (bool, 可选) - 启用Python多进程模式加速map操作。当传入的operations计算量很大时,开启此选项可能会有较好效果。默认值:False。
    2. max_rowsize (Union[int, list[int]], 可选) - 指定在多进程之间复制数据时,共享内存分配的基本单位,总占用的共享内存会随着num_parallel_workers和mindspore.dataset.config.set_prefetch_size()增加而变大,仅当python_multiprocessing为True时,该选项有效。如果是int值,代表input_columns和output_columns均使用该值为单位创建共享内存;如果是列表,第一个元素代表input_columns使用该值为单位创建共享内存,第二个元素代表output_columns使用该值为单位创建共享内存。默认值:16,单位为MB。
    3. cache (DatasetCache, 可选) - 单节点数据缓存服务,用于加快数据集处理,详情请阅读单节点数据缓存。默认值:None,不使用缓存。
    4. callbacks (DSCallback, list[DSCallback], 可选) - 要调用的Dataset回调函数列表。默认值:None。
    5. offload (bool, 可选) - 是否进行异构硬件加速,详情请阅读数据准备异构加速。默认值:None。

以下为具体示例:

# 调用mindspore.dataset.ImageFolderDataset接口实现数据读取,
data_set = ds.ImageFolderDataset(dataset_dir=dataset_path, num_parallel_workers=8, shuffle=True, decode=True)

# 将输入的Tensor转换为指定的数据类型,此处将输入的标签定义为int32,
type_cast_op = ds.transforms.transforms.TypeCast(ms.int32)
data_set = data_set.map(operations=type_cast_op, input_columns="label",
                        num_parallel_workers=get_num_parallel_workers(8))

# define map operations
trans = []

trans += [
    ds.vision.RandomCrop((224, 224), (4, 4, 4, 4)),
    ds.vision.RandomHorizontalFlip(prob=0.5)
]

trans += [
    ds.vision.Resize((train_image_size, train_image_size)),
    ds.vision.Rescale(1.0 / 255.0, 0.0),
    ds.vision.Normalize([0.4914, 0.4822, 0.4465], [0.2023, 0.1994, 0.2010]),
    ds.vision.HWC2CHW()
]

# 使用数据缓存 创建数据缓存客户端实例。
eval_cache = ds.DatasetCache(session_id=int(cache_session_id), size=0)

# 完成数据预处理
data_set = data_set.map(operations=trans, input_columns=["image"],
                    num_parallel_workers=get_num_parallel_workers(8),cache=eval_cache)

  • 10
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值