昇思25天学习打卡营第1天|快速入门实操教程

昇思25天学习打卡营第1天|快速入门实操教程

目录

昇思25天学习打卡营第1天|快速入门实操教程

一、MindSpore内容简介

主要特点:

MindSpore的组成部分:

二、入门实操步骤

1. 安装必要的依赖包

2. 下载并处理数据集

3. 构建网络模型

4. 训练模型

5. 测试模型性能

6. 进行多轮训练

7. 示例输出

总结

 博主v:XiaoMing_Java

博主v:XiaoMing_Java


一、MindSpore内容简介

本文主要是借助昇思大模型平台的Jupyter云上开发学习昇思MindSpore入门知识

昇思MindSpore是一个全场景深度学习框架,旨在实现易开发、高效执行、全场景统一部署三大目标。

设计目标是使得深度学习的开发变得更加简单高效,并提供统一的部署方案。它能够支持多种运行环境,包括云端、边缘和终端设备。

主要特点:

  1. 易开发:MindSpore 提供了友好的API接口,使得开发者可以快速上手,同时调试过程也变得更加直观。
  2. 高效执行:框架在计算效率、数据预处理和分布式训练方面进行了优化,可以充分利用硬件资源。
  3. 全场景支持:无论是在云端还是边缘设备,甚至是小型IoT设备,MindSpore都能提供良好的支持。

MindSpore的组成部分:

  • ModelZoo(模型库):提供丰富的深度学习算法模型,开发者也可以贡献自己的模型。
  • MindSpore Extend(扩展库):支持领域扩展,如图神经网络(GNN)、深度概率编程等。
  • MindSpore Science(科学计算):专为科学计算设计,包含领先的数据集和高精度模型。
  • MindExpression(全场景统一API):支持Python前端表达与编程接口,简化开发流程。
  • MindSpore Data(数据处理层):提供高效的数据处理和常用数据集加载功能。
  • MindCompiler(AI编译器):优化计算图,支持各种硬件加速。
  • MindRT(运行时系统):实现高效的运行时支持,适用于不同场景。
  • MindSpore Insight(可视化调试工具):提供可视化训练监控和调优能力。
  • MindSpore Armour(安全增强库):针对企业级应用提供安全与隐私保护功能。

二、入门实操步骤

接下来,我们将通过MindSpore的API来快速构建和训练一个简单的深度学习模型。

1. 安装必要的依赖包

首先,在进行任何开发之前,您需要确保已经安装了MindSpore及其相关依赖。可以使用以下命令进行安装:

pip install mindspore

然后我们导入所需的库:

import mindspore
from mindspore import nn
from mindspore.dataset import vision, transforms
from mindspore.dataset import MnistDataset

2. 下载并处理数据集

在我们的示例中,我们将使用MNIST数据集,这是一个经典的手写数字识别数据集。下面是下载该数据集的代码:

# 导入下载工具
from download import download# 定义数据集的URL
url = "https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/notebook/datasets/MNIST_Data.zip"
# 下载数据集并解压
path = download(url, "./", kind="zip", replace=True)

3. 构建网络模型

接下来,我们定义一个简单的神经网络模型,该模型由多个全连接层和ReLU激活函数组成:

# 定义模型结构
class Network(nn.Cell):def __init__(self):super().__init__()self.flatten = nn.Flatten()  # 扁平化层self.dense_relu_sequential = nn.SequentialCell(nn.Dense(28*28, 512),  # 输入层到隐藏层nn.ReLU(),              # 激活函数nn.Dense(512, 512),     # 隐藏层到隐藏层nn.ReLU(),nn.Dense(512, 10)       # 隐藏层到输出层)def construct(self, x):x = self.flatten(x)          # 扁平化输入数据logits = self.dense_relu_sequential(x)  # 前向传播return logitsmodel = Network()
print(model)  # 打印模型结构

4. 训练模型

接下来,我们需要定义损失函数和优化器,然后编写训练步骤:

# 实例化损失函数和优化器
loss_fn = nn.CrossEntropyLoss()  # 使用交叉熵损失
optimizer = nn.SGD(model.trainable_params(), learning_rate=1e-2)  # Stochastic Gradient Descent# 定义前向传播函数
def forward_fn(data, label):logits = model(data)  # 模型预测loss = loss_fn(logits, label)  # 计算损失return loss, logits# 获取梯度函数
grad_fn = mindspore.value_and_grad(forward_fn, None, optimizer.parameters, has_aux=True)# 定义单步训练函数
def train_step(data, label):(loss, _), grads = grad_fn(data, label)  # 计算损失和梯度optimizer(grads)  # 更新参数return lossdef train(model, dataset):size = dataset.get_dataset_size()  # 数据集大小model.set_train()  # 设置模型为训练模式for batch, (data, label) in enumerate(dataset.create_tuple_iterator()):loss = train_step(data, label)  # 单步训练if batch % 100 == 0:loss, current = loss.asnumpy(), batch  # 转换为numpy格式print(f"loss: {loss:>7f}  [{current:>3d}/{size:>3d}]")

5. 测试模型性能

编写测试函数以评估模型在测试集上的表现:

def test(model, dataset, loss_fn):num_batches = dataset.get_dataset_size()  # 测试集大小model.set_train(False)  # 设置模型为评估模式total, test_loss, correct = 0, 0, 0for data, label in dataset.create_tuple_iterator():pred = model(data)  # 模型预测total += len(data)  # 累计样本数test_loss += loss_fn(pred, label).asnumpy()  # 计算总损失correct += (pred.argmax(1) == label).asnumpy().sum()  # 计算正确预测数test_loss /= num_batches  # 平均损失correct /= total  # 正确率print(f"Test: \n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \n")

6. 进行多轮训练

训练过程需要多次迭代数据集,一次完整的迭代称为一轮(epoch)。可以使用如下代码进行训练和测试:

epochs = 3  # 设置训练轮数
for t in range(epochs):print(f"Epoch {t+1}\n-------------------------------")train(model, train_dataset)  # 训练test(model, test_dataset, loss_fn)  # 测试结果
print("Done!")

7. 示例输出

在每一轮训练后,您将会看到如下输出:

总结

通过上述步骤,我们成功地使用MindSpore构建并训练了一个简单的深度学习模型,并验证了模型的性能。这一过程展示了MindSpore的易用性和强大功能,非常适合新手入门学习。

在实际操作中,您可以根据需要调整模型的结构、超参数以及数据集,以探索更多深度学习技术的可能性。希望本教程对您有所帮助!

 博主v:XiaoMing_Java

博主v:XiaoMing_Java

 📫作者简介:嗨,大家好,我是 小 明(小明java问道之路),互联网大厂后端研发专家,2022博客之星TOP3 / 博客专家 / CSDN后端内容合伙人、InfoQ(极客时间)签约作者、阿里云签约博主、全网5万粉丝博主。


🍅 文末获取联系 🍅  👇🏻 精彩专栏推荐订阅收藏 👇🏻

专栏系列(点击解锁)

学习路线(点击解锁)

知识定位

🔥Redis从入门到精通与实战🔥

Redis从入门到精通与实战

围绕原理源码讲解Redis面试知识点与实战

🔥MySQL从入门到精通🔥

MySQL从入门到精通

全面讲解MySQL知识与企业级MySQL实战

🔥计算机底层原理🔥

深入理解计算机系统CSAPP

以深入理解计算机系统为基石,构件计算机体系和计算机思维

Linux内核源码解析

围绕Linux内核讲解计算机底层原理与并发

🔥数据结构与企业题库精讲🔥

数据结构与企业题库精讲

结合工作经验深入浅出,适合各层次,笔试面试算法题精讲

🔥互联网架构分析与实战🔥

企业系统架构分析实践与落地

行业最前沿视角,专注于技术架构升级路线、架构实践

互联网企业防资损实践

互联网金融公司的防资损方法论、代码与实践

🔥Java全栈白宝书🔥

精通Java8与函数式编程

本专栏以实战为基础,逐步深入Java8以及未来的编程模式

深入理解JVM

详细介绍内存区域、字节码、方法底层,类加载和GC等知识

深入理解高并发编程

深入Liunx内核、汇编、C++全方位理解并发编程

Spring源码分析

Spring核心七IOC/AOP等源码分析

MyBatis源码分析

MyBatis核心源码分析

Java核心技术

只讲Java核心技术

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

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

相关文章

vue项目中 watch监听的用法

1.导航栏有个搜索功能&#xff0c;点击搜索是路由跳转到课程列表这个页面&#xff0c; 2. 搜索关键字课程&#xff0c;路由跳转到openClass页面&#xff0c;并且携带query参数 search <div class"inputStyle" style"width: 280px;"><el-input v…

Tsucs吸引子:动态系统的神秘引力——从状态方程到稳定解的追寻

Tsucs吸引子&#xff1a;动态系统的神秘引力——从状态方程到稳定解的追寻 Tsucs吸引子的直观类比 你可以把Tsucs吸引子想象成一个神秘的“黑洞”&#xff0c;它不断地“吸引”着动态系统中的各种状态&#xff0c;使它们最终都落入一个稳定的“中心点”&#xff0c;就像黑洞吞噬…

c程序杂谈系列(职责链模式与if_else)

从处理器的角度来说&#xff0c;条件分支会导致指令流水线的中断&#xff0c;所以控制语句需要严格保存状态&#xff0c;因为处理器是很难直接进行逻辑判断的&#xff0c;有可能它会执行一段时间&#xff0c;发现出错后再返回&#xff0c;也有可能通过延时等手段完成控制流的正…

【C++/STL】:哈希 -- 线性探测哈希桶

目录 &#x1f4a1;前言一&#xff0c;unordered系列容器二&#xff0c;哈希2.1 哈希的概念2.2 哈希函数2.3 哈希冲突 三&#xff0c;哈希冲突解决(重点)3.1 开放定址法3.2 哈希桶(重点) 四&#xff0c;线性探测的实现4.1 线性探测的基本框架4.2 插入操作4.3 查找操作4.4 删除操…

Let‘s Encrypt

启动Https,需要从证书授权机构(简称CA)处获取一个证书,Lets Encrypt就是一个CA Lets Encrypt上可以获得免费的ssl证书,时间是3个越 下面通过Nginx和Lets Encrypt让网站升级到HTTPS Certbot简介 Certbot是Lets Encrypt官方推荐的获取证书的客户端 Centos 7.9操作 yum install …

openai版本不适配问题(在windows系统下openai migrate)

问题如下&#xff1a; 方法&#xff1a; 参考官网v1.0.0 Migration Guide openai/openai-python Discussion #742 GitHub 具体步骤&#xff1a; 1、curl -fsSL https://docs.grit.io/install | bash -x 但该命令可能不好用————将‘curl -fsSL https://docs.grit.io/i…

谷歌AI拿下IMO奥数银牌,数学推理模型AlphaProof面世,强化学习 is so back

用上了 Gemini 大模型与 AlphaZero 强化学习算法,几何、代数、数论全都会。 对于 AI 来说,奥数不再是问题了。 本周四,谷歌 DeepMind 的人工智能完成了一项壮举:用 AI 做出了今年国际数学奥林匹克竞赛 IMO 的真题,并且距拿金牌仅一步之遥。 上周刚刚结束的 IMO 竞赛共有…

深入分析 Android ContentProvider (九)

文章目录 深入分析 Android ContentProvider (九)ContentProvider 的高级使用及最佳实践&#xff08;续&#xff09;1. 复杂查询与联合查询复杂查询示例 2. 数据同步与一致性示例&#xff1a;使用事务确保数据一致性 3. 数据分页加载示例&#xff1a;分页加载数据 4. 内容提供者…

【CN】Argo 持续集成和交付(二)

7.25.通知 概述 Argo CD 通知持续监控 Argo CD 应用程序&#xff0c;并提供一种灵活的方式来通知用户应用程序状态的重要变化。使用灵活的触发器和模板机制&#xff0c;可以配置何时发送通知以及通知内容。Argo CD 通知包含有用的触发器和模板目录。因此&#xff0c;可以直接…

pycharm连接mysql

1、按照下图在pycharm找到数据库设置 在PyCharm右侧工具栏有Database&#xff0c;点击打开如果没有&#xff0c;则在view | Tool Windows | Database 选择显示 2、按照下图所示位置找到mysql&#xff08;本机由于配置过&#xff0c;所以由recent&#xff0c;第一次配置在列表中…

Cybersecurity ASPICE实施策略-基于ISO/SAE 21434-亚远景科技

近几年&#xff0c;随着软件定义汽车和汽车的智能化和网联化&#xff0c;使得汽车融合了现代通信与网络通信技术&#xff0c;实现了车与人、车与车、车与道路、车与云端等智能信息交互和共享&#xff0c;也让车具备了环境感知、协同控制、智能决策等功能&#xff1b;与此同时&a…

苹果推送iOS 18.1带来Apple Intelligence预览

&#x1f989; AI新闻 &#x1f680; 苹果推送iOS 18.1带来Apple Intelligence预览 摘要&#xff1a;苹果向iPhone和iPad用户推送iOS 18.1和iPadOS 18.1开发者预览版Beta更新&#xff0c;带来“Apple Intelligence”预览。目前仅支持M1芯片或更高版本的设备。Apple Intellige…

使用 Elasticsearch 和 LlamaIndex 保护 RAG 中的敏感信息和 PII 信息

作者&#xff1a;来自 Elastic Srikanth Manvi 在这篇文章中&#xff0c;我们将研究在 RAG&#xff08;检索增强生成&#xff09;流程中使用公共 LLMs 时保护个人身份信息 (personal identifiable information - PII) 和敏感数据的方法。我们将探索使用开源库和正则表达式屏蔽 …

正余弦算法作者又提出新算法!徒步优化算法(HOA)-2024年一区顶刊新算法-公式原理详解与性能测评 Matlab代码免费获取

声明&#xff1a;文章是从本人公众号中复制而来&#xff0c;因此&#xff0c;想最新最快了解各类智能优化算法及其改进的朋友&#xff0c;可关注我的公众号&#xff1a;强盛机器学习&#xff0c;不定期会有很多免费代码分享~ 目录 原理简介 算法伪代码 性能测评 参考文献 …

基于vue-onlyoffice实现企业office web在线应用

目录 1.背景... 1 2.Onlyoffice介绍... 2 3.Onlyoffice核心api介绍... 2 3.1 ApiDocument 2 3.2 ApiParagraph. 2 3.3 ApiTable. 2 3.4. ApiRange. 3 4.Onlyoffice插件介绍... 3 4.1 插件定义... 3 4.2 插件对象... 3 4.3 插件结构... 4 4.4 插件内嵌使用方式... 4…

搜索引擎项目(四)

SearchEngine 王宇璇/submit - 码云 - 开源中国 (gitee.com) 基于Servlet完成前后端交互 WebServlet("/searcher") public class DocSearcherServlet extends HttpServlet {private static DocSearcher docSearcher new DocSearcher();private ObjectMapper obje…

Luma AI发布文生视频大模型Dream Machine——可免费在线试玩

Sora模型的文生视频能力&#xff0c;想必一定惊艳过你。虽然Sora模型很惊艳&#xff0c;但是并没有开放给普通大众。Luma AI发布文生视频大模型Dream Machine模型&#xff0c;可以免费供大家使用&#xff0c;任何人只要到Luma AI的官方网站&#xff0c;就可体验Luma AI的文生视…

六个开源的PDF转Markdown项目

✨ 1: gptpdf gptpdf 是一个利用VLLM解析PDF为Markdown的工具&#xff0c;几乎完美支持数学公式、表格等。 GPTPDF 是一个使用视觉大模型&#xff08;如 GPT-4o&#xff09;将 PDF 文件解析成 Markdown 文件的工具。它主要用于高效地解析 PDF 文档中的排版、数学公式、表格、…

React Native新架构系列-新架构介绍

从今天起&#xff0c;会陆续更新React Native新架构相关的系列内容&#xff0c;本系列基于React Native 0.73.4版本&#xff0c;从一名Android开发者的视角进行介绍。本系列介绍的内容默认读者对React Native有一定的了解&#xff0c;对基础的开发内容不再赘述。 前言 首先介绍…

【优选算法】——leetcode——438.找到字符串中所有字母异位词

目录 1.题目 2.题目理解 3.算法原理 1.如何快速判断两个字符串是否是异位词 2.解决问题 暴力求解——>滑动窗口哈希表 滑动窗口 利用滑动窗口哈希表解决问题 优化&#xff1a;更新结果的判断条件 4.编程代码 C代码 1.频率统计 2. 双指针 C语言代码 1.字符频率…