在软件准备方面,您需要配置anaconda环境,并安装sklearn、pandas、ONNX等必要的库。
在步骤1中,用户需要收集用于机器学习模型创建的数据。该数据集的一部分(训练数据集)将用于训练模型,另一部分(测试数据集)稍后将用于评估所构建模型的性能。机器学习的数据集中的典型比率为:训练数据集占80%,测试数据集占20%。我们此次试验用的数据集与之前NanoedgeAI训练模型使用的数据是一样的。
在步骤2中,用户需要对数据进行标记;基本上,我们需要告诉机器收集的数据属于哪一类(例如“跑步”、“散步”、“静止”……) 分类指的是根据您认为重要的属性对数据进行分组:这种属性在机器学习领域被称为“类”。
接下来,在步骤3中,用户使用预先准备的数据集训练机器学习模型。该任务也称为“拟合”。训练结果的准确性在很大程度上取决于用于训练的数据的内容和数量。
在步骤4中,用户将训练过的机器学习模型嵌入到系统中。对于在计算机上执行的机器学习,用户可以利用Python库直接执行模型。对于在MCU等器件上运行的机器学习,用户可以在执行之前将该库转换为C代码。
最后在步骤5中,用户验证机器学习模型。如果验证结果与预期的结果不匹配,则用户必须确定上述步骤中需要改进的部分,以及如何改进。比如增加数据,更改模型,调整模型超参数等。
至此,我们已经帮大家重新梳理了一次AI项目的建模过程。接下来我们将按照这样的过程完成我们今天的实验。
首先,导入一些必要的库
为了便于对比,我们使用了之前NanoEdgeAI训练模型中使用的数据集。我们使用pandas从csv文件读取数据,然后用于模型训练。
在训练之前,让我们先来了解一下该数据集。让我们打印出数据集的维度。
可以看到,该数据集一共有119条数据和128个特征,最后一列实际上是我们的数据标签。
接下来,我们将数据集分为训练集和测试集,训练集用于训练模型,测试集用于检验模型的泛化能力。我们将80%的数据用于训练,20%的数据用于测试
一旦数据集准备就绪,我们就可以开始训练模型。
训练完成后,我们可以在测试集上验证模型的性能。我们发现,该模型在测试集上可以达到约83%的准确率。
我们使用netron查看模型的结构如下
该插件扩展了STM32CubeMX功能,可自动转换训练好的AI模型,生成的优化库集成到用户项目中,而不是人工构建代码,并支持将深度学习解决方案嵌入到广泛的STM32微控制器产品组合中,从而为每个产品添加新的智能化功能。
如果转换成功,我们将看到以下消息。
在stm32ai_output文件夹中,我们将看到有以下文件生成。其中,network.c/.h包含关于模型拓扑的一些信息,而network_data.c/.h则记录了关于模型权重的一些信息。
我们可借此将AI模型集成到项目中。
这样,我们就可以调用network.h中的函数将模型运行起来。
我们策划了一系列AI主题文章,详细介绍意法半导体在Deep Edge AI领域的努力成果。
欢迎您在文后积极留言,告诉我们想了解意法半导体AI的哪些方面,我们将为您呈现更多精彩内容。