Update programming model (#425)

This commit is contained in:
Cheng Lai
2023-03-09 16:21:00 +08:00
committed by GitHub
parent f80e6559b0
commit 3d7c502c68
6 changed files with 81 additions and 41 deletions

View File

@@ -1,19 +1,19 @@
## 机器学习工作流
机器学习系统编程模型的首要设计目标是:对开发者的整个工作流进行完整的编程支持。一个常见的机器学习任务一般包含如 :numref:`img_workflow`所示的流。这个工作流完成了训练数据集的读取模型的训练测试和调试。通过归纳我们可以将这一工作流中用户所需要自定义的部分通过定义以下API来支持我们这里假设用户的高层次API以Python函数的形式提供
机器学习系统编程模型的首要设计目标是:对开发者的整个工作流进行完整的编程支持。一个常见的机器学习任务一般包含如 :numref:`img_workflow`所示的工作流。这个工作流完成了训练数据集的读取模型的训练测试和调试。通过归纳我们可以将这一工作流中用户所需要自定义的部分通过定义以下API来支持我们这里假设用户的高层次API以Python函数的形式提供
- **数据处理:**
首先用户需要数据处理API来支持将数据集从磁盘读入。进一步用户需要对读取的数据进行预处理从而可以将数据输入后续的机器学习模型中。
- **模型结构**
完成数据的读取用户需要模型定义API来定义机器学习模型。这些模型带有模型参数可以对给定的数据进行推理。
- **模型定义**
完成数据的预处理用户需要模型定义API来定义机器学习模型。这些模型带有模型参数可以对给定的数据进行推理。
- **损失函数和优化算法**
- **优化器定义**
模型的输出需要和用户的标记进行对比这个对比差异一般通过损失函数Loss
function来进行评估。因此优化器定义API允许用户定义自己的损失函数并且根据损失来引入Import和定义各种优化算法Optimisation
algorithms来计算梯度Gradient完成对模型参数的更新。
- **训练过程**
- **训练:**
给定一个数据集模型损失函数和优化器用户需要训练API来定义一个循环Loop从而将数据集中的数据按照小批量mini-batch的方式读取出来反复计算梯度来更新模型。这个反复的过程称为训练。
- **测试和调试:**
@@ -175,7 +175,7 @@ train_net(args, model, train_epoch, mnist_path, dataset_size, ckpoint, False)
### 测试和验证
测试是模型运行测试数据集得到的结果,通常在训练过程中每训练一定的数据量后就会测试一次以验证模型的泛化能力。MindSpore使用model.eval接口读入测试数据集。
测试是测试数据集输入到模型,运行得到输出的过程。通常在训练过程中每训练一定的数据量后就会测试一次以验证模型的泛化能力。MindSpore使用model.eval接口读入测试数据集。
```python
def test_net(model, data_path):
"""定义验证的方法"""