《昇思 25 天学习打卡营第 7 天 | 模型训练 》
活动地址:https://xihe.mindspore.cn/events/mindspore-training-camp
签名:Sam9029
模型训练
本章节-结合前几张的内容所讲-算是一节综合实践
- mindscope 框架使用
- 张量 数据类型
- 数据集下载与加载
- 网络构建
- 函数式自动微分
以上内容都会在本节内容中实践体现
- 模型训练的四个步骤如下:
1.构建数据集。
2.定义神经网络模型。
3.定义超参、损失函数及优化器。
4.输入数据集进行训练与评估。
前言
这一节有一个疑问:深度学习中的 模型和深度学习网络 是什么关系?
- 在实际应用中,当我们谈论"模型"时,可能是在讨论模型的架构、性能、泛化能力或如何将其应用于特定任务。而当我们谈论"深度学习网络"时,我们可能更侧重于网络的结构和工作原理。
- 总结来说,深度学习网络是实现深度学习模型的一种方式,而模型是深度学习网络学习得到的能够进行预测或分类的具体实例。在深度学习领域,这两个术语经常可以互换使用,尤其是在讨论具体的神经网络结构时。
模型训练的四个步骤
-
构建数据集 :数据是深度学习的基础。使用MindSpore的
MnistDataset
,我们可以方便地加载和处理MNIST数据集。pythonfrom mindspore.dataset import MnistDataset train_dataset = MnistDataset("MNIST_Data/train", batch_size=64) test_dataset = MnistDataset("MNIST_Data/test", batch_size=64)
-
定义神经网络模型 :一个简单的神经网络模型通常包含输入层、隐藏层和输出层。在MindSpore中,我们可以通过
nn.SequentialCell
来构建顺序模型。pythonclass 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) x = self.dense_relu_sequential(x) return x
-
定义超参、损失函数及优化器:超参数如学习率、批次大小和训练轮次对模型训练至关重要。损失函数评估预测值与实际值的差异,而优化器则用于更新模型参数。
pythonepochs = 3 batch_size = 64 learning_rate = 0.01 loss_fn = nn.CrossEntropyLoss() optimizer = nn.SGD(model.trainable_params(), learning_rate=learning_rate)
-
训练与评估:通过迭代数据集进行训练,并在每轮结束后评估模型性能。
pythondef train_loop(model, dataset): # 训练循环的实现... def test_loop(model, dataset, loss_fn): # 测试循环的实现...