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