《昇思25天学习打卡营第4天|LXS》

数据变换Transform

  • 首先解释数据转换,这里的变换跟数据类型转换不太像,主要是对数据做预处理,转成模型训练所需要的DataSet类型,MIndspore提供了针对文本、音频、图像,以及Lambda匿名函数的Transform。
  • 本文主要记录常用的Transform

compose数据增强序列

  • compose是transforms的一个子类,现在以image(height,width,channel(黑白单通道,RGB三通道))hwc转成cwh格式为例,首先组装一个自定义的compose,解释一下里面的内容,rescale是对像素值进行缩放,缩放至0-1之间;normalize是做标准化,使其均匀分布;定义的HWC2CHW,即上述中的图片格式转换。
    原image的信息Hwc
composed = transforms.Compose(
    [
        vision.Rescale(1.0 / 255.0, 0),
        vision.Normalize(mean=(0.1307,), std=(0.3081,)),
        vision.HWC2CHW()
    ]
)
  • compose定义完后,通过map将其与Dataset组装在一起,通过创建Dataset迭代器获取image,可以看到已经转成了CHW的格式了
train_dataset = train_dataset.map(composed, 'image')
image, label = next(train_dataset.create_tuple_iterator())
print(image.shape)

在这里插入图片描述

Vision图像转换

  • Vision在定义compose时已经用到了,Vision是专门做图像数据处理的,包含rescale、normalize、HWC2CWH
  • rescale就是将图片像素进行缩放,我们将1/255改成1/10看看结果。
    原像素
    缩放10倍归一化的缩放255倍-normalize本质是正态分布,也称标准化,其分布比归一化分布要更加均匀,通俗理解就是归一化是简单除以最大值获得最快的分类,标准化则是基于数据的特征给像素点做了重新的分类,这在边缘检测用的比较常见
    -HWC2CWH图片格式的转换,不再赘述

TextTransform 文本转换

  • Tokenizer分词器,python自带的分词器本质上不是字典树,只是简单的按空格分词,如果要做到真正的分词应该构建字典树,以下为分词结果
    在这里插入图片描述
    仅为迭代器中的下一条数据,如需所有需要通过循环

  • LookUp词映射器,映射指的是函数的映射,lookup相当于提供了一个hashmap,将唯一的数字与词连接起来,一个数字只能表示一个词,词一般要进入LM语言模型才有用,而像词语点击量热度图完全可以将词语做映射,用映射的数字来训练模型。其更像是密码本,某一个数字唯一对应某一个词
    在这里插入图片描述## Lambda

  • 匿名函数,匿名函数像一个黑盒子,将数据集与匿名函数通过map组装在一起,数据集输出的value就会直接输出匿名函数运算的结果。自定义的数据集,所以通过generatorDataset构建数据集,可以在括号里完成Lambda函数编写,也可写成def再放入map中,创建数据集的迭代器,打印其列表,这里也是一个技巧,list(迭代器)可以输出所有内容,而next(迭代器)是下一个内容。不过一般用于数组

test_dataset = GeneratorDataset([1, 2, 3], 'data', shuffle=False)
test_dataset = test_dataset.map(lambda x: x * 2)
print(list(test_dataset.create_tuple_iterator()))

value都乘以2输出了结尾

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值