昇思25天学习打卡营第5天|数据变换Transforms

介绍

MindSpore提供不同种类的数据变换(Transforms),配合数据处理Pipeline来实现数据预处理。
所有的Transforms均可通过map方法传入,实现对指定数据列的处理。
mindspore.dataset提供了面向图像、文本、音频等不同数据类型的Transforms,同时也支持使用Lambda函数。

Transforms分类

Common Transforms

mindspore.dataset.transforms模块支持一系列通用Transforms。
transforms通用api

Vision Transforms

mindspore.dataset.vision模块提供一系列针对图像数据的Transforms。
此模块用于图像数据增强,其中有一部分增强是基于C++ OpenCV实现的,具有较好的性能,而另一部分是基于Python Pillow实现的。

Text Transforms

mindspore.dataset.text模块提供一系列针对文本数据的Transforms。与图像数据不同,文本数据需要有分词(Tokenize)、构建词表、Token转Index等操作。

PythonTokenizer

分词(Tokenize)操作是文本数据的基础处理方法。以PythonTokenizer举例实现自定义分词策略。
代码示例:

# 自定义分词函数
def my_tokenizer(content):
    return content.split()

test_dataset = test_dataset.map(text.PythonTokenizer(my_tokenizer))
print(next(test_dataset.create_tuple_iterator()))

# 运行结果:
# [Tensor(shape=[3], dtype=String, value= ['Welcome', 'to', 'Beijing'])]

Lookup

Lookup为词表映射变换,用来将Token转换为Index。在使用Lookup前,需要构造词表,一般可以加载已有的词表,或使用Vocab生成词表。
代码示例:

# 使用Vocab.from_dataset方法从数据集中生成词表
vocab = text.Vocab.from_dataset(test_dataset)
print(vocab.vocab())
# 输出
# {'to': 2, 'Beijing': 0, 'Welcome': 1}

# 配合map方法进行词表映射变换,将Token转为Index
test_dataset = test_dataset.map(text.Lookup(vocab))
print(next(test_dataset.create_tuple_iterator()))
# 输出
# [Tensor(shape=[3], dtype=Int32, value= [1, 2, 0])]

Lambda Transforms

Lambda函数是一种不需要名字、由一个单独表达式组成的匿名函数,表达式会在调用时被求值。
Lambda Transforms可以加载任意定义的Lambda函数,提供足够的灵活度。
代码示例:

# 使用GeneratorDataset接口自定义数据集
test_dataset = GeneratorDataset([1, 2, 3], 'data', shuffle=False)

# 方式一:使用一个简单的Lambda函数,对输入数据乘2
test_dataset = test_dataset.map(lambda x: x * 2)
print(list(test_dataset.create_tuple_iterator()))
# 运行结果:
# [[Tensor(shape=[], dtype=Int64, value= 2)], [Tensor(shape=[], dtype=Int64, value= 4)], [Tensor(shape=[], dtype=Int64, value= 6)]]

# 方式二:定义较复杂的函数,配合Lambda函数实现复杂数据处理
def func(x):
    return x * x + 2

test_dataset = test_dataset.map(lambda x: func(x))
print(list(test_dataset.create_tuple_iterator()))
# 运行结果:
# [[Tensor(shape=[], dtype=Int64, value= 6)], [Tensor(shape=[], dtype=Int64, value= 18)], [Tensor(shape=[], dtype=Int64, value= 38)]]

参考

截图时间
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值