是否可以在8位微控制器上运行和训练神经网络?


11

我最近阅读了有关受限环境中的神经网络(尤其是在廉价的八位微控制器上的神经网络实现)及其在IoT设备上的应用(例如,用于基于传感器输入来预测事物的回归等)。

对于处理时间不是很关键的简单应用程序来说,这似乎是理想的选择,并且要处理的数据相对较少。但是,进一步的研究表明,在资源受限的环境中训练神经网络不是一个好主意(请参阅“ 是否可以在微控制器上运行神经网络”的答案)。

这是否仍然适用于我联系的Cotton,Wilamowski和Dündar的方法?是否有必要在IoT网络中功能更强大的设备上训练专为低资源使用而设计的网络?

就上下文而言,如果我有一个传热设置的传感器,那么我正在考虑使用本文所述的神经网络,根据该神经网络和一天中的时间等来预测所需的锅炉设置。根据用户提供的更多数据输出。这个Quora问题很好地描述了类似的情况,并讨论了神经网络的实现细节,但我的问题更多地集中在在执行器本身上运行网络是否可行。


古玩(Curios),您打算在每个传感器/执行器节点上还是在某个(半)集中式“大脑”上运行神经网络(那么8位限制当然不一定适用)?
加尼玛'16

@Ghanima如果可能的话,我想在执行器节点上这样做,以节省额外的复杂性,尽管我不确定这是否可以在有限的约束下使用。
Aurora0001

@ Aurora0001您在此处放置的特定控制器可能不适合训练您的NN,但是嵌入式计算机视觉世界已经在共同努力下做到这一点。如果您试图找到一种具有适合于此类任务的架构的微控制器,我建议您寻求那些为计算机视觉行业开发此类硬件的公司。我确信其中一些可以重新调整用途并适合您的要求。 一个不错的起点
grldsndrs

@grldsndrs太棒了,谢谢参考。如果您觉得足够的话,可以随时将它作为附加答案发布(我一定会对它满意)
Aurora0001

1
8位处理器可以执行宽字处理器可以执行的任何操作,只是(取决于任务)更慢。但是,8位处理器往往具有有限的本机地址空间,这意味着它们必须使用间接方式来管理非常大的内存,并且在微控制器的情况下,往往会附带相对少量的片上内存。最低端以外的成本差异越来越小-MCU成本的主要驱动力可以说是存储器,而不是ALU宽度。
克里斯·斯特拉顿

Answers:


9

根据第一篇论文,运行不是问题。那是目的。最大重量只有一个限制:

当前,对该微控制器中嵌入的体系结构的限制仅受所需重量的限制。目前,神经网络仅限于256个权重。但是,对于大多数嵌入式应用程序,此256的权重不应限制系统。


至于培训,据我所了解的实现,PIC控制器从外部源接收参数。

编写神经网络正向计算,以便在一系列嵌套循环中分别计算每个神经元。每个循环的计算数量和每个节点的值都存储在内存中的一个简单数组中。

[...]

这些阵列包含网络的体系结构和权重。当前,出于演示目的,在对芯片进行编程时会预先加载这些阵列,但在最终版本中则没有必要。可以很容易地修改微控制器,使其包含一个简单的引导加载程序,该加载程序利用板载RS232串行端口,该串行端口将从远程位置接收重量和地形的数据。这将允许在芯片处于现场时修改权重甚至整个网络。

我怀疑培训也是在外部进行的。

本文还为神经网络培训师提供了参考,这些参考资料可能用于确定预先编程到PIC存储器中的值。

现在,我研究了第一个描述网络体系结构和与之配合使用的算法的方法。但是此处使用的神经网络训练器软件是在MATLAB中实现的。

当前,几乎没有可用的神经网络训练软件来训练完全连接的网络。因此,为此在MATLAB中开发了带有图形用户界面的软件包。该软件使用户可以轻松输入非常复杂的架构以及初始权重,训练参数,数据集以及几种强大算法的选择。

我必须提到,对于同一任务,完全连接的网络具有比逐层体系结构更低的权重数。这使其更适合于微控制器。

我不是神经网络专家,它很复杂,所以我可能会错,但是根据这些论文,我会说Cotton,Wilamowski和Dündar的方法需要外部更强大的平台来进行培训。


关于在微控制器上运行神经网络,意法半导体刚刚发布了STM32Cube.AI工具包:将神经网络转换为STM32的优化代码,以将经过预训练的神经网络从流行的库转换为大多数STM32 MCU。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.