在Simulink中为深度学习网络生成通用C/ c++代码
从R2021a开始,对于包含深度学习网络的Simulink模型,您可以使用Simulink Coder和Embedded Coder来生成符合ANSI/ iso的通用C和c++代码,不依赖于第三方深度学习库。利用深度学习工具箱中的块,包括有状态预测和有状态分类块,将卷积和循环神经网络合并到Simulink中。对时间序列数据应用预处理和后处理,以便在Simulink模型中使用。使用Embedded Coder的软件在循环(SIL)和处理器在循环(PIL)测试支持来验证生成代码的数值等价性。将生成的代码部署到任何可以编译C和c++的处理器上,包括ARM Cortex-M处理器、数字信号处理器、微控制器等。例如,将长短期记忆(LSTM)网络部署到STM32F7发现板上,并附带意法半导体发现板的嵌入式编码器硬件支持包。
从R2021a开始,您现在可以使用Simulink Coder和Embedded Coder从包含深度神经网络的Simulink模型生成通用的C和c++代码。通用的C和c++代码不依赖于第三方库,因此可以部署到任何编译C和c++代码的嵌入式处理器上,包括来自一系列设备供应商的ARM Cortex-M系列处理器、dsp和微控制器。
在Simulink中,可以为卷积和循环深度学习神经网络生成通用的C和c++代码。您可以使用深度学习工具箱中的块(包括R2021a中引入的有状态分类和有状态预测块)或MATLAB函数块将网络对象合并到Simulink模型中。通用C和c++代码生成支持各种网络和层。完整的列表可以在我们的文档中找到。
现在让我们将一个深度学习网络从Simulink部署到ARM Cortex-M处理器上。在本例中,我们将使用LSTM网络来预测涡扇发动机的剩余使用寿命。经过预先训练的网络接受来自17个发动机传感器的序列数据,并输出以周期为单位的发动机剩余使用寿命预测。时间序列输入数据被输入到具有固定工作空间的模型中,然后被发送到预测神经网络块中。
使用深度网络设计器应用程序,我们可以更深入地研究网络,看到它包含六层,包括一个LSTM层。让我们在Simulink中模拟模型。从模拟中,我们可以看到预先训练的神经网络在这里所示的每一个观察中都相对较好地预测了涡扇发动机的剩余使用寿命。预测值与实测值接近,均方根误差为20.37。
现在让我们从模型中生成通用的C代码,并将其部署到ARM Cortex-M处理器上。在配置参数中,我们将选择STM32F746G-Discovery板作为我们的硬件板。在代码生成(Code Generation)下,我们已经将系统目标文件设置为使用Embedded Coder,并将目标语言设置为c。我们将在工具链中使用ARM嵌入式处理器的新工具。最后,我们将确保深度学习目标库设置为none,以消除对第三方库的任何依赖。有了这些设置,让我们为包含神经网络的子系统生成代码。
在代码生成报告中,我们可以看到生成的文件不包括任何外部深度学习库。让我们在生成的代码中搜索模型步进函数。看阶跃函数,我们可以看到它包含一个预测方法。在预测方法中,我们可以看到一组用于神经网络的权值和偏差。向下滚动,我们可以看到用于计算神经网络输出的代码,用于每个时间步传入的时间序列输入。
成功生成代码后,让我们将其部署到目标。我们将使用处理器来循环执行,以数值验证生成的代码的输出。在第二个模型中,我们将前面看到的预测块放在模型引用中,并将其模拟模式设置为PIL。在SIL/PIL管理器应用程序中,我们将把我们的模拟模式设置为SIL/PIL,仅仅是为了从使用PIL执行运行生成的代码中收集结果,并在SIL/PIL模式中选择模型块作为我们被测试的系统。
在模拟之后,我们将比较在硬件上运行通用C代码和在Simulink上运行的预测输出。现在让我们运行生成的代码。首先在PIL模式下为模型参考块生成代码。与我们的皮质- m发现板建立连接。最后,构建并下载源代码。
左边的一组图显示了在硬件上运行生成的代码的结果,结果与实际测试数据非常接近。为了验证代码的数值准确性,我们在右边创建了第二组图来显示在我们的目标硬件上在Simulink和PIL模式中运行模拟时预测的差异。所有10个观察结果都显示,偏差在约500000分之一的公差范围内,对神经网络的准确性影响可以忽略不计。
总的来说,我们已经看到了如何从Simulink中的深度学习网络生成通用的C和c++代码,这些代码不依赖于优化库,有效地将其应用扩展到几乎所有嵌入式处理器。此外,通过在循环中进行处理器测试,我们验证了生成代码的输出是否与Simulink模拟的输出相匹配。要了解更多关于深度学习代码生成和Simulink中的MATLAB的知识,请单击下面的链接之一或参考我们的文档。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。