手把手教你用MindSpore训练一个AI模型!

416 篇文章 55 订阅
订阅专栏

首先我们要先了解深度学习的概念和AI计算框架的角色(https://zhuanlan.zhihu.com/p/463019160),本篇文章将演示怎么利用MindSpore来训练一个AI模型。和上一章的场景一致,我们要训练的模型是用来对手写数字图片进行分类的LeNet5模型

请参考(http://yann.lecun.com/exdb/lenet/)。

图1 MindSpore使用流程

安装MindSpore

MindSpore提供给用户使用的是Python接口(什么是Python,请参考:

https://zhuanlan.zhihu.com/p/462756985),所以我们首先需要安装MindSpore的whl包,安装之后就可以导入(import)MindSpore提供的方法接口了。安装whl包有两种方式:

方式一:进入MindSpore官网,根据自己的设备和Python版本选择安装命令。比如我的Python版本是3.7.5,我的设备是笔记本(CPU),那么我就复制下图红框中的命令进行安装:

图2 MindSpore安装界面

安装过程如下:

图3 MindSpore安装过程

注意:由于MindSpore还依赖于其他的Python三方库,所以在安装过程中,系统还会自动下载、安装其他的Python三方库,如numpy、pillow、scipy等等,安装结束后,如果能 import mindspore 成功,说明MindSpore安装成功了:

图4 MindSpore安装成功

方式二:可以在版本列表中找到对应的whl包,点击就能下载:

图5 MindSpore版本下载列表

下载完成后,把whl包放到自己的目录下,执行 pip install xxx.whl:

图6 MindSpore第二种安装方式

定义模型

安装好MindSpore之后,我们就可以导入MindSpore提供的算子(卷积、全连接、池化等函数:https://zhuanlan.zhihu.com/p/463019160)来构建我们的模型了。可以这么比喻:我们构建一个AI模型就像建一个房子,而MindSpore提供给我们的算子就像是砖块、窗户、地板等基本组件。

图7 定义LeNet5模型

如上图所示,我们用到的“砖块”都是mindspore.nn模块提供的。注意:这里用到了Python的类(class),由②和③两部分组成。我们这里定义的类是class LeNet5,它由初始化函数 __init__(self) 和构造函数construct(self, x)组成。初始化函数定义了我们构造模型所需要用到的算子,比如conv算子、relu算子、flatten算子等等,这些算子都是从mindspore.nn获取的;构造函数就是把我们在初始化函数中导入的算子按顺序排放,构成我们最终的模型。construct()函数的输入就是我们这个模型预测的对象,比如第一章讲的黑白图片像素矩阵;而“return y”中的就是预测的结果,对应于第一章讲到的10分类手写数字数据集,就是一个行10列的数组(这里的是指输入图片的数量,AI模型支持多张图片同时推理)。

导入训练数据集

什么是训练数据集?刚刚定义好的模型是不能对图片进行正确分类的,我们要通过“训练”过程来调整模型的参数矩阵的值。训练过程就需要用到训练样本,也就是打上了正确标签的图片。这就好比我们教小孩儿认识动物,需要拿几张图片给他们看,然后告诉他们这是什么、那是什么,教了几遍之后,小孩儿就能认识了。那么我们训练LeNet5模型就需要用到MNIST数据集,请参考(http://yann.lecun.com/exdb/mnist/)。这个数据集由两部分组成:训练集(6万张图片)和测试集(1万张图片),都是0~9的黑白手写数字图片。训练集是用来训练AI模型的,测试集是用来测试训练后的模型分类准确率的。

下载得到的数据集最初是压缩文件,还不能直接传给MindSpore的训练接口使用,我们要先用MindSpore提供的数据处理接口把他们读进来:

import mindspore.dataset as ds
mnist_ds = ds.MnistDataset(data_path)  # 导入下载的MNIST数据集

然后进行数据增强(比如把图片大小转化成相同的尺寸、像素值标准化、归一化等操作),提升训练效率:

import mindspore.dataset.vision.c_transforms as CV
import mindspore.dataset.transforms.c_transforms as C
from mindspore.dataset.vision import Inter
from mindspore import dtype as mstype

# 定义数据增强函数
def create_dataset(data_path, batch_size=32):  # batch_size是每一步训练使用的图片数量,一般取32
    """
    create dataset for train or test

    Args:
        data_path (str): Data path
        batch_size (int): The number of data records in each group
    """
    # define dataset
    mnist_ds = ds.MnistDataset(data_path)  # 导入下载的MNIST数据集
    # define some parameters needed for data enhancement and rough justification
    resize_height, resize_width = 32, 32
    rescale = 1.0 / 255.0
    shift = 0.0
    rescale_nml = 1 / 0.3081
    shift_nml = -1 * 0.1307 / 0.3081

    # according to the parameters, generate the corresponding data enhancement method
    resize_op = CV.Resize((resize_height, resize_width), interpolation=Inter.LINEAR)
    rescale_nml_op = CV.Rescale(rescale_nml, shift_nml)
    rescale_op = CV.Rescale(rescale, shift)
    hwc2chw_op = CV.HWC2CHW()
    type_cast_op = C.TypeCast(mstype.int32)

    # using map to apply operations to a dataset
    mnist_ds = mnist_ds.map(operations=type_cast_op, input_columns="label")
    mnist_ds = mnist_ds.map(operations=resize_op, input_columns="image")
    mnist_ds = mnist_ds.map(operations=rescale_op, input_columns="image")
    mnist_ds = mnist_ds.map(operations=rescale_nml_op, input_columns="image")
    mnist_ds = mnist_ds.map(operations=hwc2chw_op, input_columns="image")

    # process the generated dataset
    buffer_size = 10000
    mnist_ds = mnist_ds.shuffle(buffer_size=buffer_size)
    mnist_ds = mnist_ds.batch(batch_size, drop_remainder=True)
    return mnist_ds

 训练模型

训练数据集和模型定义完成之后呢,我们就可以开始训练模型了。但是在训练之前,我们还需要从MindSpore导入两个函数:

  • 损失函数,也就是衡量预测结果和真实标签之间的差距的函数。看过上一章的同学可能会记得,我们之前用的损失函数是真实值与预测值之差的2-范数:

图8 2-范数损失

在这里,我们使用业界最常用的交叉熵损失函数SoftmaxCrossEntropyWithLogits,对于真实标签

和预测值,它们之间的交叉熵损失计算公式为:

其中J代表数组的下标,。从MindSpore导入损失函数:

from mindspore.nn import SoftmaxCrossEntropyWithLogits
# define the loss function
net_loss = SoftmaxCrossEntropyWithLogits(sparse=True, reduction='mean') 
  • 优化器,优化器就是用来求解损失函数关于模型参数的更新梯度的,它是整个训练过程中最重要的工具!我们这里用MindSpore提供的Momentum优化器:

import mindspore.nn as nn

lr = 0.01  # 定义学习率
momentum = 0.9  # 定义Momentum优化器的超参
# define the optimizer
net_opt = nn.Momentum(network.trainable_params(), lr, momentum)  # 导入mindspore提供

 准备好损失函数和优化器之后我们就可以开始训练模型了,也非常简单,我们先把前面定义好的模型、损失函数、优化器封装成一个Model:

from mindspore import Model
net = LeNet5()
model = Model(net, net_loss , net_opt , metrics={'acc', 'loss'})

然后使用model.train接口就可以训练我们定义的LeNet5模型了:

loss_cb = LossMonitor(per_print_times=ds_train.get_dataset_size())  # 用于监控训练过程中损失函数值的变化
ds_train = create_dataset(train_data_dir)  # 传入下载的训练集的路径
model.train(num_epochs, ds_train, callbacks=[loss_cb])  # num_epochs是训练的轮数,往往训练多轮才能使模型收敛

测试训练后的模型准确率

训练结束后,调用model.eval()计算训练后的模型在测试集上面的分类准确率:

ds_eval = create_dataset(test_data_dir)  # 传入下载的训练集的路径
metrics = model.eval(ds_eval)

小结

祝贺你耐心看完了MindSpore训练模型的完整过程,如果你想动手操作一遍,但是又没有现成的环境,那么你可以使用官网提供的“在线运行”来体验一番:

图9 MindSpore官网提供的免费体验入口

这是体验过程的实操视频:

https://zhuanlan.zhihu.com/p/463229660

欢迎投稿

欢迎大家踊跃投稿,有想投稿技术干货、项目经验等分享的同学,可以添加MindSpore官方小助手:小猫子(mindspore0328)的微信,告诉猫哥哦!

昇思MindSpore官方交流QQ群 : 486831414群里有很多技术大咖助力答疑!

MindSpore官方资料

GitHub : https://github.com/mindspore-ai/mindspore

Gitee : https : //gitee.com/mindspore/mindspore

官方QQ群 : 486831 

大语言模型原理与工程实践:手把手教你训练 7B 大语言模型 自动化训练框架
程序员光剑
07-10 523
近年来,大语言模型(Large Language Models,LLMs)在自然语言处理领域取得了突破性进展。从GPT-3到ChatGPT,再到最新的GPT-4,这些模型展现出了惊人的语言理解和生成能力,引发了学术界和产业界的广泛关注。然而,训练如此庞大的模型不仅需要海量的数据和计算资源,还需要复杂的工程实践和优化技巧。本文将深入探讨大语言模型的原理,并以7B参数规模的模型为例,详细介绍如何构建一个自动化训练框架,使读者能够亲自动手训练自己的大语言模型
如何3分钟快速训练一个属于自己的(暴躁老哥、猫娘)AI模型?(弱智吧经典问题为例)
2301_79271343的博客
05-13 623
好了除此之外Gemini还有其他的一些功能比如论文分析,图片分析,希望大家玩的愉快!下面这张图可以很好的解释(图源up:MindsRiverPonder)其实个人理解就是屏蔽掉概率小的回答,趋向于概率大的回答(常见的)点击action可以增加列,也就是设置更多回答或者选项。那么那个温度(Temperature)是什么意思呢?选择Create new prompt创建新的提示。然后博主使用了一些弱智吧,很金典的问题训练了一下。然后我们进入官网看见左边的几个选项。可见攻击力还是非常强的。
如何训练一个属于自己的AI模型
小白兔奶糖の博客
01-27 8939
同时,您需要对领域有较强的了解,对数据有很好的理解,并了解您使用的深度学习框架。学习使用机器学习和深度学习框架,如 TensorFlow、PyTorch、scikit-learn等,来构建和训练模型。使用深度学习平台:可以使用深度学习平台如 TensorFlow,PyTorch等,进而提高模型构建和训练的效率。此外,为了让模型更好地学习游戏规则和策略,数据集应该具有足够的多样性,包括不同的游戏级别、游戏难度和游戏类型。最后,一定要记住,学习训练 AI 模型一个长期的过程,需要经常练习和深入学习。
零基础也能搞定!手把手教你打造个人专属的AI模型,拢共分三步!
最新发布
python1234_的博客
08-05 1915
众所周知,我们已经有很多免费的大模型工具可以用,比如:文心一言:https://yiyan.baidu.com/通义千问:https://tongyi.aliyun.com/qianwen/以及众多手机APP:豆包、腾讯元宝、kimi、文心一言…但那些都是别人的,我还想要自己的,因为——🚀:在自己个人电脑上安装和使用大模型,数据不离开自己电脑,保护个人隐私;🌐:随时随地使用,不联网也可以正常使用;📚:深入理解大模型运行机制,体验新技术,满足好奇心;💰。
如何训练ai模型
weixin_35755562的博客
01-13 4564
训练 AI 模型需要以下几个步骤: 选择合适的模型类型,如神经网络。 准备训练数据,包括输入和标签。 配置训练参数,如学习率、迭代次数等。 运行训练程序,让模型训练数据上学习。 评估模型性能,如损失值、准确率等。 调整参数或模型结构,重复训练直到性能达到满意水平。 ...
AI模型】如何进行简单的AI模型训练
G_redsky的博客
03-23 4396
你可以从简单的模型开始,如多层感知器(MLP),然后逐步尝试更复杂的结构,如循环神经网络(RNN)、长短期记忆网络(LSTM)或Transformer。选择合适的框架:选择一个适合初学者的AI框架,如TensorFlow、PyTorch或Keras。学习基础知识:首先,你需要了解机器学习和深度学习的基础知识,包括神经网络、反向传播算法、损失函数等。训练和调参:使用你的数据集训练模型,并根据需要调整超参数。你可以使用GPU加速训练过程,并监控训练过程中的损失函数值和准确率。你可以计算模型的准确率、召回率、
AI模型学习的十种方法
琴歌声声送我的博客
03-30 1359
编程是实现理论知识落地的关键步骤。在AI模型的学习过程中,应熟练掌握Python编程语言,并且精通TensorFlow、PyTorch、Keras等深度学习框架的使用。从数据获取、清洗、预处理到模型构建、训练、调试、优化,每个阶段都需要实践操练,形成完整的项目开发流程。在这个过程中,不仅要学会如何设置和调整模型的超参数,理解各种优化算法(如梯度下降、动量梯度下降、Adam等)的工作原理,还要熟练运用交叉验证、网格搜索等方法来优化模型性能,并采用多样化的评估指标(如精度、召回率、AUC-ROC曲线、F1分数
如何训练AI模型?熬夜爆肝整理大全
m0_63171455的博客
06-18 1975
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。AI模型训练需要大量的计算资源,包括GPU、TPU等。AI模型在预训练阶段学到了丰富的知识,但在实际应用中,如何将这些知识迁移到新的任务和场景,提高模型的泛化能力,是一个具有挑战性的问题。第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
手把手教你拥有一个属于自己的AI聊天模型并实现流式输出
07-27
前端聊天页面demo
【小白CV】手把手教你用YOLOv5训练自己的数据集(从Windows环境配置到模型部署)_梁瑛平的博客-CSDN博客.pdf
12-02
2. pytorch:pytorch是一个流行的深度学习框架,提供了多种工具和库用于构建和训练深度学习模型。 3. YOLOv5:YOLOv5是一个流行的目标检测算法,能够快速准确地检测图像中的目标。 4. labelimg:labelimg是一个...
大语言模型原理与工程实践:手把手教你训练 7B 大语言模型 动手预训练实践
AI大模型应用之禅
06-24 787
大语言模型原理与工程实践:手把手教你训练 7B 大语言模型 动手预训练实践 1.背景介绍 1.1 大语言模型的兴起 近年来,随着深度学习技术的飞速发展,大语言模型(Large Language Mo
手把手教你学dsp2812,手把手教你学dsp2812pdf下载,C,C++
09-10
这本书以其全面且易懂的特性,为读者提供了一个深入理解数字信号处理及其在嵌入式系统中应用的平台。以下将详细介绍该书涵盖的一些核心知识点。 1. **DSP基础知识**:首先,书本会介绍数字信号处理的基础概念,包括...
训练自己的ai模型(一)学习笔记与项目实操
热门推荐
m0_54765221的博客
04-03 2万+
ai模型大火,作为普通人,我也想做个自己的ai模型
如何使用Python从0训练自己的AI模型
qq_22593423的博客
03-08 5418
本篇博客介绍了如何使用Python从0训练自己的AI模型。以下是本篇博客的主要内容总结:确定问题和数据集:明确要解决的问题,并选择合适的数据集。数据预处理:对数据进行清洗、特征提取和数据转换等预处理步骤。构建模型:选择适合问题的模型架构,并使用Python构建模型训练模型:定义损失函数和优化算法,并使用训练数据集对模型进行训练。评估和调优模型:评估模型的性能,并根据需要进行模型的调优。部署和应用模型:将训练好的模型部署到实际应用中,并使用它解决实际问题。
AI模型训练与优化
qq_19774249的博客
03-23 1227
高效的训练算法和自动化技术是提高大规模机器学习模型训练效率和性能的关键。通过不断引入新算法、优化现有算法,并利用自动化技术进行超参数优化、模型选择和调试排错,可以进一步提升AI模型训练的效率和质量,推动人工智能技术的发展和应用。
从零开始:AI模型训练入门概念
AI心易行者
05-30 534
AI模型训练是指通过给定的数据集,让模型自动学习数据中的规律,从而使其具备处理实际问题的能力。训练过程中,模型会不断调整内部参数,以期在输入相似数据时给出正确的输出。
AI模型训练无需购买设备啦!Tesar超算网络让AI模型训练更便捷!
weixin_43433873的博客
10-29 605
现代科技的发展可以用日新月异来形容,新技术的出现也是层出不穷。一个眨眼的功夫,一门足以改变世界的应用可能就被发明出来了,当然也有可能一个遥遥领先的企业瞬间被超越。处在风云变化时代,最重要的就是时间,就是效率。 对于人工智能行业尤为如此,我们的衣食住行方面都有涉及到人工智能,这将为我们未来的生活提供便捷,一个优秀的idea 被构想出来之后就需要在最短的时间内实现应用,不然就很可能错失先机,被别的企业...
Mindspore-训练模型
你在看屏幕的同时,屏幕也在注视着你
11-10 7333
Mindspore-训练模型
训练自己的ai模型(三)学习笔记与项目实操(一些概念理解杂谈)
m0_54765221的博客
04-11 3418
ai模型大火,作为普通人,我也想做个自己的ai模型
写文章

热门文章

  • 技术干货|什么是大模型?超大模型?Foundation Model? 50088
  • 技术干货 | 一文弄懂差分隐私原理! 13646
  • 敲重点!最全大模型训练合集! 10762
  • 手把手教你用MindSpore训练一个AI模型! 10236
  • 如何处理GPU上Error Number:700 an illegal memory access was encounter 6938

分类专栏

  • 活动 36篇
  • 新闻 56篇
  • 技术博客 416篇
  • MindSpore易点通 20篇
  • AI工程与实践 29篇

最新评论

  • 10+倍效率提升、三分钟完成工厂设计!基于昇思MindSpore打造的智能化工大模型亮相

    Insanexiao: 有论文成果吗,想研究一下他是怎么测评领域专业能力的

  • RWKV解读:在Transformer的时代的新RNN

    留尘铃: 它只有外层for q in Queries这个循环了。因为求和项的计算与i无关,所以所有的 Qi 可以共享求和项的值。换言之,求和项的值可以只计算一次,然后存在内存中供所有 Qi 去使用。 ———————————————————— 这里是这么说明,求和和i无关,但是上面的公式中,i参与进求和运算中了呀(j=1~i),这为啥说是和i无关呢?

  • 参赛攻略 | 第六届·2024 MindSpore 量子计算黑客松 热身赛通关秘籍

    weixin_44539350: 有一起组队的吗

  • 技术干货 | AlphaFold/ RoseTTAFold开源复现(1)—推理复现

    weixin_48344565: 请问RoseTTA在晟腾硬件上是否有复现

  • 极致高效压缩,手机就能实时跑的分割一切模型TinySAM已在昇思MindSpore开源

    qq_45436969: 这个模型的参数量大致是多少量级

最新文章

  • @高校开发者!线上实习+亮眼项目+实习证明与薪酬就在昇思开源实习
  • 昇思学习打卡营第二期起航啦!一站式提升AI能力!
  • 华为全联接大会2024 | 昇腾参会全览预热启航!
2024
09月 14篇
08月 29篇
07月 27篇
06月 21篇
05月 29篇
04月 25篇
03月 29篇
02月 8篇
01月 28篇
2023年215篇
2022年409篇
2021年45篇

目录

目录

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家浙江水果玻璃钢雕塑萍乡抽象玻璃钢雕塑联系方式邢台玻璃钢海豚雕塑价格黑龙江定制玻璃钢花盆新乡城市玻璃钢雕塑淄博市玻璃钢人物雕塑生产商佛山玻璃钢爱国主题雕塑玻璃钢十米高的雕塑多少钱城市几何玻璃钢雕塑售价温州从化玻璃钢人物雕塑抚州公园玻璃钢雕塑设计蒙自市玻璃钢雕塑收费玻璃钢广场雕塑多少钱云南设计雕塑玻璃钢梅花鹿玻璃钢雕塑商场美陈研究钟祥玻璃钢牌匾雕塑手糊玻璃钢雕塑厂家威海玻璃钢卡通雕塑厂家直销玻璃钢钢铁侠雕塑厂家西岗玻璃钢花盆花器玻璃钢雕塑 母子商洛玻璃钢商场美陈广东户外玻璃钢雕塑市场玻璃钢外国雕塑宜春个性化玻璃钢雕塑优势山西玻璃钢商城广场美陈雕塑报价宿州抽象玻璃钢雕塑供应商山西人物玻璃钢雕塑安装贵州玻璃钢雕塑优势香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化