【MindSpore】安装和使用MindSpore 2.0.0版本简单实现数据变换Transforms功能

news2024/9/29 9:21:26

本篇文章主要是讲讲MindSpore的安装以及根据官方提供的例子实现数据变换功能。
昇思MindSpore是一款开源的AI框架,旨在实现易开发、高效执行、全场景覆盖三大目标。

目录

  • 1、加入MindSpore社区
  • 2、安装前准备
    • 2.1、获取安装命令
    • 2.2、安装pip
    • 2.3、确认系统环境
  • 3、安装MindSpore
    • 3.1、完整性校验
    • 3.2、命令安装
    • 3.3、验证安装
    • 3.4、升级版本
  • 4、数据准备
    • 4.1、背景
    • 4.2、安装download模块
    • 4.3、下载数据
  • 5、数据变换 Transforms
    • 5.1、Common Transforms
      • 5.1.1、Compose
    • 5.2、Vision Transforms
      • 5.2.1、Rescale
      • 5.2.2、Normalize
      • 5.2.3、HWC2CWH
    • 5.3、Text Transforms
      • 5.3.1、BasicTokenizer
      • 5.3.2、Lookup
    • 5.4、Lambda Transforms

1、加入MindSpore社区

在这里插入图片描述

2、安装前准备

2.1、获取安装命令

官方提供版本和环境配置信息,非常的方便,直接根据自己环境选择即可
在这里插入图片描述

pip install https://ms-release.obs.cn-north-4.myhuaweicloud.com/2.0.0a0/MindSpore/cpu/x86_64/mindspore-2.0.0a0-cp39-cp39-win_amd64.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com -i https://pypi.tuna.tsinghua.edu.cn/simple
# 注意参考下方安装指南,添加运行所需的环境变量配置

2.2、安装pip

确保自己环境已经安装pip,若还没有安装,推荐如下两种方式安装
1)官方推荐
pip方式安装MindSpore CPU版本-Windows
2)博客文章
可参考下面我这篇文章写的【小5聊】Python基础学习之python版本对应pip版本查看

2.3、确认系统环境

1)操作系统
确认安装Windows 10是x86架构64位操作系统。
在这里插入图片描述
2)Python版本
确认安装Python(>=3.7.5)。可以从Python官网或者华为云选择合适的版本进行安装
在这里插入图片描述

3、安装MindSpore

3.1、完整性校验

set MS_VERSION=2.0.0a0

在这里插入图片描述

3.2、命令安装

复制自己选择的安装命令

pip install https://ms-release.obs.cn-north-4.myhuaweicloud.com/2.0.0a0/MindSpore/cpu/x86_64/mindspore-2.0.0a0-cp39-cp39-win_amd64.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com -i https://pypi.tuna.tsinghua.edu.cn/simple

以下为安装过程
在这里插入图片描述
在这里插入图片描述

3.3、验证安装

python -c "import mindspore;mindspore.run_check()"

3.4、升级版本

当需要升级版本时,可执行如下命令

pip install --upgrade mindspore=={version}

温馨提示:升级到rc版本时,需要手动指定{version}为rc版本号,例如1.5.0rc1;如果升级到正式版本,=={version}字段可以缺省。

4、数据准备

mindspore.dataset提供了面向图像、文本、音频等不同数据类型的Transforms,同时也支持使用Lambda函数。

4.1、背景

通常情况下,直接加载的原始数据并不能直接送入神经网络进行训练,此时我们需要对其进行数据预处理。MindSpore提供不同种类的数据变换(Transforms),配合数据处理Pipeline来实现数据预处理。所有的Transforms均可通过map方法传入,实现对指定数据列的处理。

4.2、安装download模块

pip install download

在这里插入图片描述

4.3、下载数据

根据官方提供的例子代码,会将数据下载到根目录
在这里插入图片描述

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# 2023-02-25

import numpy as np
from PIL import Image
from download import download
from mindspore.dataset import transforms, vision, text
from mindspore.dataset import GeneratorDataset, MnistDataset


# Download data from open datasets

url = "https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/" \
      "notebook/datasets/MNIST_Data.zip"
path = download(url, "./", kind="zip", replace=True)

train_dataset = MnistDataset('MNIST_Data/train')

在这里插入图片描述

5、数据变换 Transforms

5.1、Common Transforms

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

5.1.1、Compose

Compose接收一个数据增强操作序列,然后将其组合成单个数据增强操作。我们仍基于Mnist数据集呈现Transforms的应用效果。
1)根据上一步下载好的数据,可加载并输出,如下

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# 2023-02-25

import numpy as np
from PIL import Image
from download import download
from mindspore.dataset import transforms, vision, text
from mindspore.dataset import GeneratorDataset, MnistDataset

train_dataset = MnistDataset('MNIST_Data/train')
image, label = next(train_dataset.create_tuple_iterator())
print(image.shape)

在这里插入图片描述
2)数据变换

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# 2023-02-25

import numpy as np
from PIL import Image
from download import download
from mindspore.dataset import transforms, vision, text
from mindspore.dataset import GeneratorDataset, MnistDataset

# 先加载到数据
train_dataset = MnistDataset('MNIST_Data/train')

# 设置数据变换参数
composed = transforms.Compose(
    [
        vision.Rescale(1.0 / 255.0, 0),
        vision.Normalize(mean=(0.1307,), std=(0.3081,)),
        vision.HWC2CHW()
    ]
)

# 输出数据变换后的内容
train_dataset = train_dataset.map(composed, 'image')
image, label = next(train_dataset.create_tuple_iterator())
print(image.shape)

在这里插入图片描述

5.2、Vision Transforms

mindspore.dataset.vision模块提供一系列针对图像数据的Transforms。在Mnist数据处理过程中,使用了Rescale、Normalize和HWC2CHW变换。

5.2.1、Rescale

Rescale变换用于调整图像像素值的大小,包括两个参数:
rescale:缩放因子。
shift:平移因子。
1)像素值进行缩放

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# 2023-02-25

import numpy as np
from PIL import Image
from download import download
from mindspore.dataset import transforms, vision, text
from mindspore.dataset import GeneratorDataset, MnistDataset

random_np = np.random.randint(0, 255, (48, 48), np.uint8)
random_image = Image.fromarray(random_np)
print(random_np)

在这里插入图片描述
2)数据处理

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# 2023-02-25

import numpy as np
from PIL import Image
from download import download
from mindspore.dataset import transforms, vision, text
from mindspore.dataset import GeneratorDataset, MnistDataset

random_np = np.random.randint(0, 255, (48, 48), np.uint8)
random_image = Image.fromarray(random_np)

rescale = vision.Rescale(1.0 / 255.0, 0)
rescaled_image = rescale(random_image)
print(rescaled_image)

在这里插入图片描述

5.2.2、Normalize

Normalize变换用于对输入图像的归一化

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# 2023-02-25

import numpy as np
from PIL import Image
from download import download
from mindspore.dataset import transforms, vision, text
from mindspore.dataset import GeneratorDataset, MnistDataset

random_np = np.random.randint(0, 255, (48, 48), np.uint8)
random_image = Image.fromarray(random_np)

rescale = vision.Rescale(1.0 / 255.0, 0)
rescaled_image = rescale(random_image)

normalize = vision.Normalize(mean=(0.1307,), std=(0.3081,))
normalized_image = normalize(rescaled_image)
print(normalized_image)

在这里插入图片描述

5.2.3、HWC2CWH

HWC2CWH变换用于转换图像格式。

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# 2023-02-25

import numpy as np
from PIL import Image
from download import download
from mindspore.dataset import transforms, vision, text
from mindspore.dataset import GeneratorDataset, MnistDataset

random_np = np.random.randint(0, 255, (48, 48), np.uint8)
random_image = Image.fromarray(random_np)

rescale = vision.Rescale(1.0 / 255.0, 0)
rescaled_image = rescale(random_image)

normalize = vision.Normalize(mean=(0.1307,), std=(0.3081,))
normalized_image = normalize(rescaled_image)

hwc_image = np.expand_dims(normalized_image, -1)
hwc2cwh = vision.HWC2CHW()
chw_image = hwc2cwh(hwc_image)
print(hwc_image.shape, chw_image.shape)

在这里插入图片描述

5.3、Text Transforms

mindspore.dataset.text模块提供一系列针对文本数据的Transforms。与图像数据不同,文本数据需要有分词(Tokenize)、构建词表、Token转Index等操作。这里简单介绍其使用方法。
首先我们定义三段文本,作为待处理的数据,并使用GeneratorDataset进行加载。

5.3.1、BasicTokenizer

分词(Tokenize)操作是文本数据的基础处理方法,MindSpore提供多种不同的Tokenizer。这里我们选择基础的BasicTokenizer举例。配合map,将三段文本进行分词,可以看到处理后的数据成功分词。

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# 2023-02-25

import numpy as np
from PIL import Image
from download import download
from mindspore.dataset import transforms, vision, text
from mindspore.dataset import GeneratorDataset, MnistDataset

texts = [
    'Welcome to Beijing',
    '北京欢迎您!',
    '我喜欢China!',
]

test_dataset = GeneratorDataset(texts, 'text')
fdfds=text.BasicTokenizer()
test_dataset = test_dataset.map(text.BasicTokenizer())

报错原因:BasicTokenizer接口不支持windows平台
在这里插入图片描述

5.3.2、Lookup

Lookup为词表映射变换,用来将Token转换为Index。在使用Lookup前,需要构造词表,一般可以加载已有的词表,或使用Vocab生成词表。这里我们选择使用Vocab.from_dataset方法从数据集中生成词表。

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# 2023-02-25

import numpy as np
from PIL import Image
from download import download
from mindspore.dataset import transforms, vision, text
from mindspore.dataset import GeneratorDataset, MnistDataset

texts = [
    'Welcome to Beijing',
    '北京欢迎您!',
    '我喜欢China!',
]

test_dataset = GeneratorDataset(texts, 'text')
vocab = text.Vocab.from_dataset(test_dataset)
print(vocab.vocab())

在这里插入图片描述

5.4、Lambda Transforms

Lambda函数是一种不需要名字、由一个单独表达式组成的匿名函数,表达式会在调用时被求值。Lambda Transforms可以加载任意定义的Lambda函数,提供足够的灵活度。在这里,我们首先使用一个简单的Lambda函数,对输入数据乘2

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# 2023-02-25

import numpy as np
from PIL import Image
from download import download
from mindspore.dataset import transforms, vision, text
from mindspore.dataset import GeneratorDataset, MnistDataset

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

在这里插入图片描述

总结:第一次体验MindSpore的AI框架,我感觉视野一下子就被打开了,体验非常的棒,给MindSpore点赞,官方提供的例子也非常清晰明了!感兴趣的小伙伴也可以体验一下!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/370969.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaWeb--Web概述

Web概述1 Web概述1.1 Web和JavaWeb的概念1.2 JavaWeb技术栈1.2.1 B/S架构1.2.2 静态资源1.2.3 动态资源1.2.4 数据库1.2.5 HTTP协议1.2.6 Web服务器1.3 Web核心课程安排今日目标: 了解JavaWeb开发的技术栈 1 Web概述 1.1 Web和JavaWeb的概念 Web是全球广域网&#…

阿里软件测试二面:adb 连接 Android 手机的两种方式,看完你就懂了

前言 随着现在移动端技术的突飞猛进,导致现在市场上,APP 应用数不胜数,那对于测试工程师而言,对于 APP 的测试,那基本就是一个必修课了。 今天,我就来给大家介绍一下,adb 连接 Android 手机的两…

Spring(Bean生命周期)

目录 1. 生命周期简图2. 扩展接口介绍 2.1 Aware接口2.2 BeanPostProcessor接口2.3 InitializingBean2.4 DisposableBean2.5 BeanFactoryPostProcessor接口3. spring的简化配置 3.1 项目搭建3.2 Bean的配置和值注入3.3 AOP的示例 1. 生命周期简图 2. 扩展接口介绍 2.1 Aware接…

Redis实现分页和多条件模糊查询方案

导言 Redis是一个高效的内存数据库,它支持包括String、List、Set、SortedSet和Hash等数据类型的存储,在Redis中通常根据数据的key查询其value值,Redis没有模糊条件查询,在面对一些需要分页、排序以及条件查询的场景时(如评论&…

PolarDB数据库的CSN机制

背景 对postgres数据库熟悉的同学会发现在高并发场景下在获取快照处易出现性能瓶颈,其原因在于PG使用全局数组在共享内存中保存所有事务的状态,在获取快照时需要加锁以保证数据一致性。获取快照时需要持有ProcArraryLock共享锁比遍历ProcArray数组中活跃…

[计算机网络(第八版)]第二章 物理层(学习笔记)

网络层是网络体系结构的最低层,不是具体的传输媒体,也不是连接计算机的具体物理设备 2.1 物理层的概念 物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的作用: 要尽可能地屏…

面试题:Android 中 Intent 采用了什么设计模式?

答案是采用了原型模式。原型模式的好处在于方便地拷贝某个实例的属性进行使用、又不会对原实例造成影响,其逻辑在于对 Cloneable 接口的实现。 话不多说看下 Intent 的关键源码: // frameworks/base/core/java/android/content/Intent.java public cla…

阅读笔记9——DenseNet

一、DenseNet DenseNet的网络结构如图1-1所示,其核心是Dense Block模块,Dense Block中的一个黑点就代表一个卷积模块(不是一个卷积层,而是DenseNet提出的一个BottleNeck模块,后文有讲解),每条黑…

ClassPathResource遇到的坑:class path resource

读取文件--ClassPathResource前言一、使用ClassPathResource.getFile()的坑二、通过流读取文件内容总结前言 需求:拿到一个小程序的皮肤文件夹,放在resource目录下 1:根据皮肤的style.json,获取json内的${xxx.png}变量(获的图片名…

「2」指针进阶——详解

🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀 目录 🐰指向函数指针数组的指针(很少用,了解) 🐰回调函数&…

【Arduino 无刷电机控制教程】

【Arduino 无刷电机控制教程】 1. 概述2. 试验准备3. 实验原理4. Arduino 无刷电机控制 – 电路图4.1 实验组件4.2 用于 BLDC 电机控制的 Arduino 代码5. 实验验证5.1 电位计控制无刷电机速度5.2 电调校准在本教程中,我们将学习如何使用 Arduino 和 ESC 控制无刷电机。如果您想…

建议将com.alibaba:fastjson升级至1.2.83

问题 升级了gradle,改了文件存储位置,项目需要重新构建下载依赖文件,发现fastjson 1.2.66一直下载不下来一直卡在下载,就想着手动下载下试试,就去了mvnrepository网站找到fastjson时,发现了fastjson2 Note…

一文让你彻底了解Linux内核文件系统

一,文件系统特点 文件系统要有严格的组织形式,使得文件能够以块为单位进行存储。文件系统中也要有索引区,用来方便查找一个文件分成的多个块都存放在了什么位置。如果文件系统中有的文件是热点文件,近期经常被读取和写入&#xf…

数学不好,英语不行,非本专业,可以学IT吗?

很多小伙伴,都会问小青一些比较类似的问题。比如:不是计算机专业的,可以学编程吗?数学一直就不好,可以转行学IT吗?学编程开发,对英语的的要求会不会很高?01计算机不是计算机专业的&a…

C/C++开发,无可避免的内存管理(篇三)-规划好内存

一、用内存空间换效率 1.1 allocatoe类模板 在前面简述模板顺序容器时,就提到过,标准库中的 vector 类是通过预先分配额外内存以换取不不用每次添加元素都要重新分配内存和移动元素,而是将元素直接保存加入的预先分配的内存区域。在预先分配…

【Git】Git冲突与解决方法

目录 一、Git冲突如何产生? 二、解决Git冲突—手动修改冲突 【第一步】在 hot-fix 分支上增加如下代码,并且提交。 【第二步】在master 分支上同样的地方增加如下代码,并且提交。 【第三步】 我们现在在 master 分支上合并 hot-fix 分支&a…

慢雾:Discord 私信钓鱼手法分析

事件背景 5 月 16 日凌晨,当我在寻找家人的时候,从项目官网的邀请链接加入了官方的 Discord 服务器。在我加入服务器后立刻就有一个"机器人"(Captcha.bot)发来私信要我进行人机验证。这一切看起来相当的合理。我也点击了这个验证链接进行查看…

数据结构——顺序表讲解

作者:几冬雪来 时间:2023年2月25日 内容:数据结构顺序表内容讲解 目录 前言: 顺序表: 1.线性表: 2.什么是顺序表: 3.顺序表的概念和构成: 4.顺序表的书写: 1…

【Web逆向】万方数据平台正文的逆向分析(上篇--加密发送请求)—— 逆向protobuf

【Web逆向】万方数据平台正文的逆向分析(上篇--加密发送请求)—— 逆向protobuf声明一、了解protobuf协议:二、前期准备:二、目标网站:三、开始分析:我们一句句分析:先for循环部分:后…

Servlet笔记(11):Servletcontext对象

1、什么是ServletContext ServletContext是一个全局储存空间,随服务器的生命周期变化, Cookie,Session,ServletContext的区别 Cookie: 存在于客户端的本地文本文件 Session: 存在于服务器的文本文件&#…