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


    今天是参加昇思25天学习打卡营的第5天,学习的内容是《数据变换 Transforms》,这里做一个简单的分享。

    1.简介

    今天的学习目标是了解数据变换以及mindspore.dataset.transforms模块的功能。

    数据集在进行神经网络训练的之前需要进行处理,这就需要使用Transforms模块来实现对不同数据的变换。mindspore.dataset提供了面向图像、文本、音频等不同数据类型的Transforms,同时也支持使用Lambda函数。

    2.增强变换Compose

    transforms.Compose可以接收一个数据增强操作序列来实现数据变换,将多种变换按顺序进行组合,形成一个变换集。如下代码可以实现缩放、规划、数据参数顺序变换。

    composed = transforms.Compose(
        [
            vision.Rescale(1.0 / 255.0, 0),
            vision.Normalize(mean=(0.1307,), std=(0.3081,)),
            vision.HWC2CHW()
        ]
    )
    

    3.Vision Transforms

    Vision Transforms 是的针对图像的数据变换方法。主要包括三种基础变换RescaleNormalizeHWC2CHW

    (1)Rescale变换用于调整图像像素值的大小,包括两个参数:

    • rescale:缩放因子。
    • shift:平移因子。

    (2)Normalize变换用于对输入图像的归一化,包括三个参数:

    • mean:图像每个通道的均值。
    • std:图像每个通道的标准差。
    • is_hwc:bool值,输入图像的格式。True为(height, width, channel),False为(channel, height, width)。

    (3)HWC2CHW变换用于转换图像格式。

    ​ 在不同的硬件设备中可能会对(height, width, channel)或(channel, height, width)两种不同格式有针对性优化。MindSpore设置HWC为默认图像格式,在有CHW格式需求时,可使用该变换进行处理。

    4.Text Transforms

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

    (1)分词主要是将句子按照分词规则拆分成分词词

    (2)构建词表示将分词转换成词表

    (3)Token转Index主要是为词表中的分词创建索引

    示例代码如下:

    texts = ['Welcome to Beijing']
    test_dataset = GeneratorDataset(texts, 'text')
    def my_tokenizer(content):
        return content.split()
    # 分词
    test_dataset = test_dataset.map(text.PythonTokenizer(my_tokenizer))
    print(next(test_dataset.create_tuple_iterator()))
    
    # 构建词表
    vocab = text.Vocab.from_dataset(test_dataset)
    
    # token 转 Index
    test_dataset = test_dataset.map(text.Lookup(vocab))
    print(next(test_dataset.create_tuple_iterator()))
    

    5. Lambda Transforms

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

    利用Lambda Transforms实现数据集的数据进行 乘2的操作,代码实现如下:

    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()))
    

    6.小结

    数据变换是对数据集处理的基础操作,也是十分重要的步骤。 mindspore提供的图像、文本、Lambda等变换方法为这些基础变换提供了便捷的操作。

    以上是第5天的学习内容,附上今日打卡记录:
    在这里插入图片描述

  • 相关阅读:
    杠杆思维和时间管理
    【数值计算方法】矩阵特征值与特征向量的计算(一):Jacobi 旋转法及其Python实现
    本周三商店更新:多款套装下线,四款升级武器带异色皮肤返厂
    设计一个简单HTML爵士音乐网页(HTML+CSS)
    ElasticSearch从入门到精通--第三话(集群环境搭建篇)
    LabVIEW使用VI Package Manager(VIPM)下载和管理附加组件
    论文笔记:Few-Shot Named Entity Recognition: An Empirical Baseline Study
    30分钟使用百度EasyDL实现健康码/行程码智能识别
    虹科活动 | SWCF 2022卫星通信与仿真测试线上研讨会倒计时,快来报名吧!
    Go语言面试题
  • 原文地址:https://blog.csdn.net/randomize0/article/details/140034218